我正在尝试使用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>
我收到错误消息,
设置属性 “System.Windows.ResourceDictionary.DeferrableContent”导致了一个问题 异常。
(我对德语错误信息的翻译)。那么我如何设置所有按钮的样式,例如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>
答案 0 :(得分:2)
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
创建按钮样式。