WPF主题:不适用于TextBox,为什么?

时间:2010-05-11 11:52:47

标签: wpf resourcedictionary

我必须说我在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。

1 个答案:

答案 0 :(得分:0)

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

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

我将本地词典(窗口中的词典)与App的MergedDictionaries一起移动,我的所有控件都被正确设置样式。

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

那么,你们有没有想过我实际上做错了什么?

再次感谢您的帮助, 干杯, 詹卢卡。