我有一个WPF应用程序,我在其中稍微更改了默认样式,添加了一些常见的填充或边距,或类似的东西。我通常在Window.Resources
或某些资源字典中执行此操作,我会在窗口或应用程序的资源中加载。一个示例风格可能是这样的:
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="5" />
</Style>
到目前为止一切顺利。请注意,我正在更改默认组件,而不是用户组件。
今天我注意到Windows 8中使用的 Aero2 主题提供了一些不同于我在Windows 7的 Aero 主题中使用的标准样式。不幸的是,我真的不能制作一个只适用于两者的通用风格。
因此,我希望能够指定不同的样式,具体取决于用户使用的主题。例如,如果用户正在使用 Aero ,我想在Windows 8上加载Aero-styles.xaml
,如果它是 Aero2 ,我想加载{{1}而不是。
我希望通过使用 Themes 目录并提供Aero2-styles.xaml
和Aero.NormalColor.xaml
来实现这一目标。不幸的是,这似乎仅适用于自定义控件,而不适用于内置控件。它也不会使可用的密钥可用作静态/动态参考。
有办法做到这一点吗?可能提供一个包含自定义的基本资源字典,然后是另一个与主题相关的字典,并对使用过的主题进行微调?
答案 0 :(得分:-1)
在启动时检测主题(在加载任何UI之前),并动态地将适当的ResourceDictionary添加到Application.Resources.MergedDictionaries。 这对我有用。