WPF主题是否可以用于包含可在运行时更改的应用程序的多个外观?

WPF主题是否可以用于包含可在运行时更改的应用程序的多个外观?,wpf,styles,themes,controltemplate,skins,Wpf,Styles,Themes,Controltemplate,Skins,WPF允许一个控制库为不同的系统主题提供不同的资源字典,本质上允许应用程序匹配操作系统所选的可视主题(Aero、Luna等) 我想知道我是否可以在我的应用程序中包含多个主题资源词典,并在框架内利用一些现有的主题支持。这应该适用于我自己的主题名称,理想情况下允许用户在运行时更改主题,从而更改应用程序的外观。即使这只是一个配置设置,也可能会很有趣。我不知道在框架中有什么方法可以做到这一点,但如果你对每个可以改变自己的控件进行样式化,你就可以做到 其原理是将样式设置为DynamicResource,然

WPF允许一个控制库为不同的系统主题提供不同的资源字典,本质上允许应用程序匹配操作系统所选的可视主题(Aero、Luna等)


我想知道我是否可以在我的应用程序中包含多个主题资源词典,并在框架内利用一些现有的主题支持。这应该适用于我自己的主题名称,理想情况下允许用户在运行时更改主题,从而更改应用程序的外观。即使这只是一个配置设置,也可能会很有趣。

我不知道在框架中有什么方法可以做到这一点,但如果你对每个可以改变自己的控件进行样式化,你就可以做到

其原理是将样式设置为
DynamicResource
,然后根据不同样式的用户配置加载
ResourcesDictionary


是一篇有示例的文章。

这里是我在支持主题化的应用程序中使用的代码片段。在这个例子中,我有两个主题(默认和经典XP)。主题资源分别存储在DefaultTheme.xaml和ClassicTheme.xaml中

这是my App.xaml中的默认代码

<Application ...>
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ArtworkResources.xaml" />
                <ResourceDictionary Source="DefaultTheme.xaml" />
            </ResourceDictionary.MergedDictionaries>

            <Style x:Key="SwooshButton" TargetType="ButtonBase">
                <!-- style setters -->
            </Style>

            <!-- more global styles -->
        </ResourceDictionary>
    </Application.Resources>
</Application>
使用这种方法还需要记住的是,任何使用主题的样式都需要有一个动态资源。例如:

<Window Background="{DynamicResource AppBackgroundColor}" />

回答得很好,我已经实现了这个,我想知道您如何使用它来更改绑定按钮图像。我在这里问了一个问题:
<Window Background="{DynamicResource AppBackgroundColor}" />