资源字典中的 Metro Styles

Metro Styles in resource dictionary

我正在尝试使用 Mahapps Metro 设计我的 WPF 应用程序的样式。我在 App.xaml 中的 MergedDictionary 中添加了所有需要的 .xaml 文件。如果我在视图文件中写入以下内容,

<Button DockPanel.Dock="Left" VerticalAlignment="Top" Style="{DynamicResource SquareButtonStyle}"/>

有效,即按钮的样式为 SquareButtonStyle 样式。但是如果我改为在我自己的资源字典中添加以下内容,

<Style TargetType="Button">
    <Setter Property="Style" Value="{DynamicResource SquareButtonStyle}"/>
</Style>

我收到一条错误消息,

Setting of the property "System.Windows.ResourceDictionary.DeferrableContent" has caused an exception.

(我翻译的德语错误信息)。那么我如何设置所有按钮的样式,例如,使用 SquareButtonStyle 而不必在每个按钮上单独设置样式?

编辑:这是我的app.xaml(最后一个字典,ResourceDic.xaml,是我自己的字典,上面的代码是):

<Application xmlns:local="clr-namespace:MGM8" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <local:MGM8_BootStrapper p7:Key="bootstrapper" xmlns:p7="http://schemas.microsoft.com/winfx/2006/xaml" />
                </ResourceDictionary>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
            <ResourceDictionary Source="ResourceDic.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Style 属性 不能设置在任何元素的 Style 内。

只需在根级别(根资源字典或 App.xmal 资源)声明您的样式。只需使用 TargetType Button 创建样式,不要给它任何键。它将应用于应用程序中的所有按钮。

例如:

<Style TargetType="Button" BasedOn="{StaticResource SquareButtonStyle}" >
        <Setter Property="Height" Value="50"/>
        <Setter Property="BorderThickness" Value="2,1" />
    </Style>

以上是为所有按钮扩展您的 SquareButtonStyle 应用程序(仅当在根级别定义时)。

更新:

您必须在自己的资源词典中使用以下内容:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="SquareButtonStyle dictionary"/>
</ResourceDictionary.MergedDictionaries>

那么只有您可以根据 ResourceDictionary 中的 SquareButtonStyle 创建按钮样式。