none
怎么把一个wpf应用程序项目生成为一个组件 RRS feed

  • 问题

  • 我想把一个wpf应用程序的输出类型由windows应用程序改为类库该怎么做,直接在项目属性里改的话报错为 库项目文件无法指定applicationdefinition属性
    2011年5月2日 10:11

答案

  • 是因为类库项目里面不能有Application 实例,所以你把App.xaml删掉就好了。

    有任何疑问,欢迎来MSDN WPF论坛!

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月3日 10:29
    版主
  • 是的,其实App.xaml本身是个ResourceDictonary,所以正确的生成组件并且包含你的定义的Resource方法是:

    1. 新建一个Wpf Application, 删除 App.xaml 更改项目输出类型为库
    2. 打开解决方案中的 Properties目录下的 AssemblyInfo.cs文件
    3. 修改增加以下这个标签:
      [assemblyThemeInfo(
          ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
        //(used if a resource is not found in the page, 
        // or application resource dictionaries)
          ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
        //(used if a resource is not found in the page, 
        // app, or any theme specific resource dictionaries)
      )]
    4. 然后你就需要在项目增加一个名为 Themes 的目录,在目录里面添加一个名为 Generic.xaml 的ResourceDictionary
    5. 这样,你就可以把在App.xaml中定义的资源全部放在Generic.xaml中了,系统根据程序集的设置会默认从这个资源目录中去寻找资源

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月5日 16:41
    版主

全部回复

  • 是因为类库项目里面不能有Application 实例,所以你把App.xaml删掉就好了。

    有任何疑问,欢迎来MSDN WPF论坛!

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月3日 10:29
    版主
  • 只能这样吗,那我之前在App.xaml里定义的全局样式都得另外处理了是吧?
    2011年5月5日 13:09
  • 是的,其实App.xaml本身是个ResourceDictonary,所以正确的生成组件并且包含你的定义的Resource方法是:

    1. 新建一个Wpf Application, 删除 App.xaml 更改项目输出类型为库
    2. 打开解决方案中的 Properties目录下的 AssemblyInfo.cs文件
    3. 修改增加以下这个标签:
      [assemblyThemeInfo(
          ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
        //(used if a resource is not found in the page, 
        // or application resource dictionaries)
          ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
        //(used if a resource is not found in the page, 
        // app, or any theme specific resource dictionaries)
      )]
    4. 然后你就需要在项目增加一个名为 Themes 的目录,在目录里面添加一个名为 Generic.xaml 的ResourceDictionary
    5. 这样,你就可以把在App.xaml中定义的资源全部放在Generic.xaml中了,系统根据程序集的设置会默认从这个资源目录中去寻找资源

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月5日 16:41
    版主
  • 哦 好的 问题解决了  谢谢您!
    2011年5月6日 3:05
  • 删除额  出了点问题,只是按您那样设置就行了吗?我照着您的方法,结果出错说找不着资源

    出错代码:

    <Window.Resources>

            <Style TargetType="{x:Type Button}" BasedOn="{StaticResource AppButton}">

     

            </Style>

        </Window.Resources>

     

    出错:未找到StaticResource引用"AppButton"

    都是按您说的去操作的,是不是还要设置什么东西

    2011年5月8日 13:10
  • 静态引用必须是可以直接找到的,这个资源是要直接被Merge合并到当前项目的。所以你的问题可能在于

    1:你没有把资源合并,参考资源合并 http://msdn.microsoft.com/zh-cn/library/aa350178.aspx

    2:你需要的是 动态引用,而不是静态:DynamicResource

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月9日 11:18
    版主