样式不在运行时应用,而是在设计时应用于wpf

时间:2013-05-22 10:04:41

标签: wpf resourcedictionary

我在一个位于WPFResources.dll的资源字典中有一个简单的样式,我在另一个项目中访问这个样式,我可以看到样式在设计时应用,但是当我运行应用程序时我得到"Cannot find resource named 'IndentCheckBoxStyle'. Resource names are case sensitive"的例外。如果我使用StaticResource然后我可以看到这个异常如果我使用DynamicResource然后我没有看到任何异常,但在UI上看不到任何内容。

有关此问题的更多信息:

我在我的项目中引用了WPFResources.dll并将其合并到App.XAML中,如下所示:

<Application.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/WPFResources;component/Theme.xaml" />
        </ResourceDictionary.MergedDictionaries>        
    </ResourceDictionary>
    </Application.Resources>

在Theme.xaml中,我合并了cheboxstyle的资源字典。

任何人都对此有任何想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题,发现使用Pack URI语法将样式应用于整个应用程序,

e.g。在App.xaml中

<Application x:Class="Framework.Presentation.Preview.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/Abt.Framework.Presentation;component/Themes/AbtDark.xaml"/>
            </ResourceDictionary.MergedDictionaries>
         </ResourceDictionary>
    </Application.Resources>
</Application>

但是,隐式样式未应用于应用程序中的顶级窗口(尽管MyTheme.xaml包含未命名的窗口样式)

要解决这个问题,我只是为Window使用了一个命名样式(非隐式样式)。其余的正确应用。