我刚刚开始使用 Blend for Visual Studio 来习惯 WPF。我以前使用标准的 Windows 窗体创建程序,现在想使用更现代的东西。 但是我在 5 分钟后就遇到了一个主要问题。 我添加了一个带有透明背景图像的按钮。这就像一个魅力,但问题是,当我运行应用程序时,当鼠标悬停在按钮上时,按钮总是变蓝。我不想要这种蓝色效果,但在 Blend 中找不到禁用它的选项。 希望有人能帮我解决这个愚蠢的问题,Windows Forms 有点
最佳答案
您所描述的是按钮的默认状态行为。您必须创建自定义模板或样式才能更改它。示例:
<Button Content="Button">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</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>
</Button.Style>
</Button>
我在这里演示两个属性更改:Background
和 Foreground
。您可以拥有任意数量,并将它们更改为您想要的任何值。如果您不想进行任何更改,只需删除 Style.Triggers
或其中的特定属性即可。
这是给你的演示,因为你是新手:
这是资源字典
方式:
创建一个 Resource Dictionary
并向其添加样式:
<Style x:Key="CustomButtonStyle" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</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>
将其放在您的 App.xaml
或您合并资源字典的任何地方:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ButtonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
然后简单地为您的按钮指定样式:
Style="{StaticResource CustomButtonStyle}"
关于wpf - Blend/WPF 中按钮上的蓝色鼠标悬停效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26850712/