gpt4 book ai didi

WPF 触发器未按预期工作

转载 作者:行者123 更新时间:2023-12-02 20:56:03 33 4
gpt4 key购买 nike

我想要一个红色按钮,当鼠标悬停在它上面时,该按钮会变成黑色。

    <Button Content="Hover me" Grid.Column="3" Grid.Row="3">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

但是,我的问题是,当我将鼠标悬停在按钮上时,它会变成带有渐变灰色外观的默认 Windows 样式。

最佳答案

尝试一下

<Window.Resources>
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter x:Name="PART_Content"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
TextElement.Foreground="{TemplateBinding Foreground}"></ContentPresenter> </Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>

并应用自定义样式如下

<Button Content="Hover me" Style="{StaticResource MyButtonStyle}" Height="30" Width="100"/>

原因是按钮的默认 Aero 样式。它在 ControlTemplate 中定义了一个镶边,它对各种鼠标事件有自己的行为。所以重写你的触发调用。

因此您必须覆盖 Button 的默认 ControlTemplate 才能达到您想要的结果。

关于WPF 触发器未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17758904/

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