gpt4 book ai didi

c# - WPF 从按钮样式覆盖触发器

转载 作者:太空狗 更新时间:2023-10-29 22:57:02 26 4
gpt4 key购买 nike

我在窗口资源中有以下按钮样式:

<Style x:Key="MyStyle" TargetType="{x:Type Button}">

<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0 0 0 3"/>

<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Orange" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BorderBrush" Value="Red" />
</Trigger>
</Style.Triggers>

</Style>

此样式由两个 wpf 按钮共享。但是有一个按钮我想在按下时显示自定义颜色,颜色将为绿色。

所以在这个特殊按钮中,我想覆盖触发器中为 borderbrush 属性指定的值,而不是红色我想要绿色。

如何做到这一点?

最佳答案

您可以使用可以覆盖的 {DynamicResource} 设置 BorderBrush 属性:

<SolidColorBrush x:Key="pressed" Color="Red" />
<Style x:Key="MyStyle" TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0 0 0 3"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Orange" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource pressed}" />
</Trigger>
</Style.Triggers>
</Style>
...
<Button Content="Red" Style="{StaticResource MyStyle}" />

<Button Content="Green" Style="{StaticResource MyStyle}">
<Button.Resources>
<SolidColorBrush x:Key="pressed" Color="Green" />
</Button.Resources>
</Button>

或者您可以创建另一个覆盖整个触发器的 Style:

<Button Content="Green">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource MyStyle}">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

关于c# - WPF 从按钮样式覆盖触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905233/

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