0

我必须说我是 WPF 的新手。我正在构建我的第一个真正的应用程序,目前我正面临一些主题问题。这就是我发帖的原因。

为了使用一个主题,例如 ExpressionDark.xaml,我认为在应用程序级别包含它就足够了。因此,在我的 App.xaml 中,我添加了:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Skins/ExpressionDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <myLib:Locator x:Key="Locator" />
    </ResourceDictionary>
</Application.Resources>

这是第一个问题:我不确定我做的是否正确。将 ExpressionDark.xaml 包含在我的应用程序中,在“skins”文件夹中并以这种方式引用它是否正确?在其他地方我发现了诸如“System.Windows.Theming.ExpressionDark”之类的东西。那是正确的方法吗?

无论如何,通过使用上述方法应用主题,我可以看到几乎所有控件都以正确的方式设置样式;我说“几乎所有”是因为其中一些,比如 DataGrids 或 TextBoxes,不是。我检查了 ExpressionDark.xaml 内部,发现也为这些组件定义了样式。那么为什么我会出现这种奇怪的行为呢?

我希望我已经足够清楚地解释了一切。如果不是,请告诉我。

提前感谢您提供的任何帮助。

干杯,

G。

4

1 回答 1

0

好的,我想我已经知道发生了什么。

在 App.xaml 中,我设置了我希望我的应用程序使用的样式字典。在我的 MainWindow.xaml 中,在“本地”资源中,有另一个字典显然覆盖了 App.xaml 继承的字典。

我将本地字典(窗口中的字典)与应用程序的 MergedDictionaries 一起移动,并且我的所有控件的样式都正确。

我不明白这种行为的原因。这两个字典并不意味着冲突,我认为可以在 App 中使用通用字典,在 Window 中使用更专业的字典。

那么,你们知道我实际上做错了什么吗?

再次感谢您的帮助,干杯,Gianluca。

于 2010-05-11T13:17:10.513 回答