2

我在位于 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 的资源字典。

有人对此有任何想法吗?

提前致谢。

4

1 回答 1

1

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

例如在 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 使用了一个命名样式(不是隐式样式)。其余的都正确应用。

于 2015-06-03T12:28:47.173 回答