1

我想使用ToggleButton来自以下网站的免费主题样式:brianlagunas.com

问题是,如果我应用主题,不仅我的切换按钮被设置样式,而且每个控件都根据该主题设置样式。

如何从设计为隐式使用的主题中显式应用样式?

主题是如何加载的

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!-- Light Theme -->
            <ResourceDictionary
             Source="Themes/Metro/Light/Metro.MSControls.Core.Implicit.xaml" />
            <ResourceDictionary
             Source="Themes/Metro/Light/Metro.MSControls.Toolkit.Implicit.xaml" />
            <!-- Dark Theme -->
            <!--
                <ResourceDictionary
                 Source="Themes/Metro/Dark/MetroDark.MSControls.Core.Implicit.xaml" />
                <ResourceDictionary
                 Source="Themes/Metro/Dark/MetroDark.MSControls.Toolkit.Implicit.xaml" />
            -->
        </ResourceDictionary.MergedDictionaries>
        <!-- Light Theme -->
        <SolidColorBrush x:Key="BackgroundKey" Color="#FFFFFF" />
        <!-- Dark Theme -->
        <!--<SolidColorBrush x:Key="BackgroundKey" Color="#FF181818" />-->
    </ResourceDictionary>
</Window.Resources>

我如何计划使用主题:

<ToggleButton Content="ToggleButton" Width="150"
    Style="{StaticResource ToggleButtonStyle}"/>

谢谢。

4

1 回答 1

2

问题是您加载了一个ResourceDictionaryToggleButton.

由于您链接的下载页面实际上是下载完整的解决方案,因此您有以下选项:

  1. 转到Metro.MSControls.Core.Implicit.xaml并将切换按钮的样式复制到您的资源中(带有ToggleButtonStyle键的那个,不要忘记“带上”所有必要的画笔)。
  2. 由于那里没有 DLL,我假设您编译了项目/解决方案 - 所以您可以重新编译它。如果是这样,请转到同一个文件并注释掉这一行:
<Style BasedOn="{StaticResource ToggleButtonStyle}"
    TargetType="{x:Type ToggleButton}" />

(文件中最后一个样式之前的一个)

重新编译它,你很高兴。

我肯定会选择选项 2。

于 2013-11-11T19:00:17.507 回答