gpt4 book ai didi

c# - WPF - 创建触发器以使用资源样式

转载 作者:行者123 更新时间:2023-11-30 20:51:17 24 4
gpt4 key购买 nike

我有一个带按钮的对话框 - 按钮文本和功能是动态的,并且会根据用户的需要而变化。在大多数情况下,按钮样式是默认样式,如果按钮是确定按钮,我希望按钮使用不同的样式。我试图添加一个触发器,它将根据 bool 属性更改按钮样式:(当 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>
  • RedButtonStyle 是一种资源样式,可用于不同项目的不同按钮类型,因此灵魂应该在我的项目中,不能在资源样式本身中。

但是当使用这个触发器时我得到一个异常。“设置属性 system.windows.controls.control.template 引发异常”

谁能帮我解决这个问题,或者提出动态设置样式的想法?

谢谢

最佳答案

您可以将触发器放在样式本身中:

<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 Button 与您希望所有按钮都具有的更通用的样式基本相同,您可以像这样以通用样式为基础:

<Style x:Key="OKButtonStyle" BasedOn="{StaticResource GeneralButtonStyle}">

关于c# - WPF - 创建触发器以使用资源样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com