【发布时间】:2012-06-24 08:06:00
【问题描述】:
我创建了一个类库程序集,在其中创建了自定义控件,并在 generic.xaml 文件中定义了默认样式。
这似乎是一个相当普遍的问题,只要有很多人发布它。 但是我找不到任何有用的答案。
- generic.xaml 位于 Themes 文件夹中。
- generix.xaml 文件 Build Action 设置为 Page。
- ThemeInfo 在我的 AssemblyInfo.cs 中正确定义。
在我的测试应用程序中,如果我手动将自定义控件程序集中的 generic.xaml 文件合并到应用程序 App.xaml 文件中,如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyControlsAssembly;component/Themes/generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后自定义控件的主题正确,但如果我不手动合并 generic.xaml,这些控件将显示为默认的 Windows 主题。
你能告诉我我忘记了什么和/或做错了什么吗?
附加信息:
-
我的 ThemeInfo 程序集属性定义如下:
[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly)](注意:对于 ThemeInfo 属性的参数任意组合,结果都是一样的)
在 Themes 文件夹中的 generic.xaml 文件旁边还有另外两个 .xaml 文件。
- Themes 文件夹中有一个子文件夹,它本身包含另一个 .xaml 文件。
【问题讨论】:
-
您的自定义控件的静态构造函数中是否还设置了 DefaultStyleKeyProperty?
-
运气好能搞定这个吗?我的自定义控件程序集几乎完全相同。如果我在 App.config 中添加对 generic.xaml 文件的引用,则控件是主题的。如果我把它排除在外,我什么也得不到。
-
此链接是否适用? social.msdn.microsoft.com/Forums/vstudio/en-US/…我也面临同样的问题,我认为这是根本原因
-
这个问题有什么解决办法吗?我遇到了完全相同的事情,按照此处或blogs.magnatis.com/tim/dude-wheres-my-default-style 中建议的步骤没有帮助。我需要像这篇文章一样在 App.xaml 中包含合并。
-
在控件库的 AssemblyInfo.cs 中添加 ThemeInfo 对我有用。我用过(无,SourceAssembly)。
标签: wpf styles themes generic.xaml