WPF 自定义Window窗体引用不写Key样式引用失败
当自定义一个Window窗体,直接在样式中不写Key,程序集引用后就有可能产生样式资源无法引用,体现为无程序报错 然后黑屏或纯白屏(总之就是没资源没内容啥都没)。
如下图左侧黑色部分为例,右侧黄底红标题的为正确样式(样式写Key windows引用即成功)。
解决方法:
1.先确认自定义Window窗体 Public类中是否存在
public TestWindow() { //以下代码二选一 DefaultStyleKey = typeof(TestWindow);
//DefaultStyleKeyProperty.OverrideMetadata(typeof(TestWindow), new FrameworkPropertyMetadata(typeof(TestWindow))); }
2.确认AssemblyInfo.cs文件中是否含有如下代码 ,如果是WPF自定义控件库会自动生成,但是如果是类库就不会
[assembly:ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(未在页面中找到资源时使用,
//或应用程序资源字典中找到时使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(未在页面中找到资源时使用,
//、应用程序或任何主题专用资源字典中找到时使用)
)]
3.以上如果还不行,那么恭喜你跟我犯了一样的错误,需要建立Themes文件夹,在文件夹下新建类Generic.xaml 然后把样式在这个类中添加引用
搜索了很多资料,最后发现其实很多都是对的,但是回答不够全,对于我这种菜鸟来说理解相当困难
在这里感谢技术交流Q群953444136大佬 糖君 的耐心解答