我尝试使WPF按钮的通用样式,因为它是启用或禁用:
<Style x:Name="btnStyle" x:Key="btnStyle" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" Value="#FFCFFFFF"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Style" Value="{DynamicResource btnStyle}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Style" Value="{DynamicResource btnStyle}" />
</Trigger>
</Style.Triggers>
</Style>
和我的按钮:
<Button Style="{StaticResource btnStyle}"/>
这会在运行时产生以下异常。
"Style object is not allowed to affect the Style property of the object to which it applies."
如何将此通用样式应用于我的按钮的两种状态?我能不能只用样式覆盖按钮的模板?
发布于 2016-09-17 16:22:56
在@adminSoftDK答案的帮助下,我找到了我的解决方案。我在两个触发器属性上设置了相同的样式。
<Style x:Key="btnStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" Value="#FFCFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" Value="#FFCFFFFF"/>
</Trigger>
</Style.Triggers>
</Style>
发布于 2016-09-03 16:11:59
您的btnStyle是一种样式,在启用或禁用时要更改的所有属性都位于触发器中,例如
<Style x:Name="btnStyle" x:Key="btnStyle" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" Value="#FFCFFFFF"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Content" Value="Enabled" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Content" Value="Disabled" />
</Trigger>
</Style.Triggers>
</Style>
https://stackoverflow.com/questions/39304665
复制相似问题