WPF移动Themes文件夹后自定义控件Style未生效问题求助
问题根因
WPF 自定义无外观控件的默认样式有约定的加载路径,默认会从程序集根目录下的Themes/Generic.xaml读取资源,你把Themes文件夹移动到NewFolder1子目录后,WPF 默认找不到对应的资源文件,所以样式不会生效。
可用解决方案
- 方案1(无需改程序集配置,最便捷):在App.xaml中手动合并移动后的资源字典
打开项目的App.xaml文件,添加如下配置:
<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/NewFolder1/Themes/Generic.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
- 方案2(遵循WPF资源查找逻辑):修改程序集的ThemeInfo配置指定资源路径
打开项目下Properties文件夹中的AssemblyInfo.cs,找到ThemeInfo特性,修改配置如下:
[assembly: ThemeInfo( ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly, "/NewFolder1/Themes" )]
该配置会告知WPF到指定的子目录下查找Generic.xaml资源文件。
- 方案3(零配置,最推荐):将Themes文件夹移回项目根目录
这是WPF的默认约定路径,遵循约定可以避免后续自定义控件相关的资源加载问题,不需要额外做任何配置即可正常加载样式。
内容的提问来源于stack exchange,提问作者StephenH
相关产品推荐
相关产品推荐

