我必须说我在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。
答案 0 :(得分:0)
好的,我想我已经知道发生了什么。
在App.xaml中,我设置了我希望我的应用程序使用的样式字典。在我的MainWindow.xaml中,在“本地”资源中,显然有另一个字典显然覆盖了App.xaml继承的字典。
我将本地词典(窗口中的词典)与App的MergedDictionaries一起移动,我的所有控件都被正确设置样式。
我不明白这种行为的原因。这两个字典并不打算发生冲突,我认为可以在App中使用通用字典,在Window中使用更专业的字典。
那么,你们有没有想过我实际上做错了什么?
再次感谢您的帮助, 干杯, 詹卢卡。