资源字典中的 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
创建按钮样式。
我正在尝试使用 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
创建按钮样式。