gpt4 book ai didi

c# - 按钮触发事件不适用于边框?

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:11 25 4
gpt4 key购买 nike

我搜索了很多有关如何在 wpf 中为按钮创建模板以避免或覆盖默认鼠标悬停事件的信息,并且我创建了自己的模板(在其他代码的帮助下),但我的代码可能不起作用。我想更改背景颜色并更改边框外观,但边框触发器不起作用。请检查我的代码并指导我修复它,谢谢。

        <Button x:Name="AccountBtn" Width="250" Height="100" Margin="5 5 5 5" >
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="Myborder" BorderThickness="1 1 1 1" BorderBrush="#EDEDED" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="2 2 2 2"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

最佳答案

正确的代码如下

<Button x:Name="AccountBtn" Width="250" Height="100" Margin="5 5 5 5" >
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="BorderThickness" Value="1 1 1 1"/>
<Setter Property="BorderBrush" Value="#EDEDED"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="Myborder"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Green"/>
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="2 2 2 2"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

您的代码的问题不在于触发器不工作。触发器正常工作,但 BorderBrushBorderThickness 属性的值在您的模板中被忽略了!

所以我把代码改成了这样

  • BorderBrushBorderThickness 的值取自 Button 的属性,
  • 初始值在样式中设置,并且
  • (可选)将触发器从控件模板直接移至样式。

就是这样!

关于c# - 按钮触发事件不适用于边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396686/

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