【发布时间】:2017-05-16 19:00:53
【问题描述】:
我在外部自定义控件库项目中为标准 WPF 控件和自定义控件提供了几种样式和模板。对于每个控件,在我的 \Themes 文件夹中都有一个 ResourceDictionary,以及一个包含所有其他 XAML 文件的合并字典的 Generic.xaml。
我确定:
-
Generic.xaml位于我的项目根目录下的Themes\文件夹中 -
Generic.xaml的 Build Action 为Page。 -
Generic.xaml使用自定义工具标志MSBuild:Compile。 - 外部库声明了以下行:
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
我尝试了什么:
来源
Source="MyControl.xaml"Source="/MyLibrary;component/Themes/MyControl.xaml"Source="/MyLibrary;component/Themes/MyControl.xaml"Source="/pack://application:,,,/Themes/MyControl.xaml"Source="/pack://application:,,,/MyLibrary;component/Themes/MyControl.xaml"
应用
- 在我的应用程序中手动引用
Generic.xaml以及所有可能的源声明
但是,没有任何效果。即使在访问 Application.Current.Resources 时我可以看到所有字典都已加载,该应用程序仍完全没有主题。
还值得注意的是,我的大多数控件主题都包含额外的动态资源(用于颜色等),这些资源是在应用程序启动时手动加载的。
似乎我面临与 OP in this question here 完全相同的未解决问题,但他们表示手动引用 Generic.xaml 对他们有效。
【问题讨论】:
-
如果您在尝试应用样式和 generic.xaml 的位置发布简化的消费者 xaml 可能会有所帮助。