我有一个带按钮的对话框 - 按钮文本和功能是动态的,并根据用户的需要而变化。 在大多数情况下,按钮样式是默认样式,如果按钮是OK按钮,我希望按钮使用不同的样式。 我试图添加一个触发器,它将根据布尔属性更改按钮样式: (当IsOKButton = true时使用“RedButtonStyle”)
<Button.Template>
<ControlTemplate >
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsOKButton}" Value="True">
<Setter Property="Style" Value="{StaticResource RedButtonStyle}"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
但是当使用此触发器时,我得到一个例外。 “set property system.windows.controls.control.template抛出异常”
任何人都可以帮我解决这个问题,或建议动态设置风格吗?
谢谢
答案 0 :(得分:4)
您可以将触发器放在样式本身中:
<Style x:Key="OKButtonStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding IsOKButton}" Value="True">
//Whatever Property is different in the OKButtonStyle
</DataTrigger>
<DataTrigger Binding="{Binding IsOKButton}" Value="False">
//Set it back to default
</DataTrigger>
</Style.Triggers>
</Style>
然后从一开始就给你的按钮设置样式OKButtonStyle。
如果想要使你的OK按钮与你希望所有按钮都具有的更通用的风格大致相同,你可以将它基于这样的普通风格:
<Style x:Key="OKButtonStyle" BasedOn="{StaticResource GeneralButtonStyle}">