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大佬 糖君 的耐心解答

 

 

 

posted @ 2021-07-12 17:08  wudiliang  阅读(235)  评论(0)    收藏  举报