0

我有一个 WPF 应用程序,我在其中稍微更改了默认样式,以添加一些常见的填充或边距,或类似的东西。我通常Window.Resources在窗口或应用程序的资源中加载或在某些资源字典中执行此操作。示例样式可能是这样的:

<Style TargetType="{x:Type Button}">
    <Setter Property="Margin" Value="5" />
</Style>

到目前为止,一切都很好。请注意,我正在更改默认组件,而不是用户组件。

今天我注意到 Windows 8 中使用的Aero2主题带有一些与 Windows 7 的Aero主题不同的标准样式。不幸的是,我并没有真正能够制作出一种适用于两者的通用样式。

因此,我希望能够指定不同的样式,具体取决于用户使用的主题。例如,如果用户使用Aero,我想加载Aero-styles.xaml,如果它是Windows 8 上的Aero2Aero2-styles.xaml ,我想加载。

我希望通过使用Themes目录并提供Aero.NormalColor.xamlAero2.NormalColor.xaml. 不幸的是,这似乎只适用于自定义控件,而不是内置控件。它也不会使可用键可用作静态/动态参考。

有没有办法做到这一点?提供可能包含自定义的基本资源字典,然后提供另一个主题相关字典,对使用的主题进行细微调整?

4

1 回答 1

-1

在启动时检测主题(在加载任何 UI 之前),并将适当的 ResourceDictionary 动态添加到 Application.Resources.MergedDictionaries。这对我有用。

于 2013-09-26T14:20:09.157 回答