为什么我的 IsMouseOver 样式在我的控制器样式中什么都不做
Why my IsMouseOver style doing nothing in my controller style
所以我有这个 Style
:
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
<Style TargetType="Controls:NumericUpDown">
<Setter Property="Background" Value="#FF307AE4"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Background" Value="Gray"/>
<Setter Property="BorderBrush" Value="Gray"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Gainsboro"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="BorderBrush" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
我定义了几种颜色并想更改IsMouseOver
属性但是这似乎根本没有效果。
IsEnabled
工作正常。
我做错了什么?
看看您是否也在您的控件中设置 BorderBrush 属性,认为它会设置一些初始值。这将始终优先于通过您的样式所做的任何更改。
我试过下面的代码:
<Controls:NumericUpDown Minimum = "0" Maximum = "10000" Interval = "5" StringFormat="C2" Padding="5">
<Controls:NumericUpDown.Style>
<Style TargetType="Controls:NumericUpDown">
<Setter Property="Background" Value="Pink"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Background" Value="DeepSkyBlue"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="3"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Cornsilk"/>
<Setter Property="BorderBrush" Value="Purple"/>
<Setter Property="BorderThickness" Value="3"/>
</Trigger>
</Style.Triggers>
</Style>
</Controls:NumericUpDown.Style>
</Controls:NumericUpDown>
并且鼠标悬停边框效果根本不可见。背景运行良好,但 BorderBrush、BorderThickness 根本不起作用。这肯定是一个错误。
但是当我们应用此页面上给出的某些样式时,情况会发生变化。但仍然 borderbrush 没有改变。但 BorderThickness 工作正常。你可以试验一下。等我熟悉了以后再更新。
所以我有这个 Style
:
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
<Style TargetType="Controls:NumericUpDown">
<Setter Property="Background" Value="#FF307AE4"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Background" Value="Gray"/>
<Setter Property="BorderBrush" Value="Gray"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Gainsboro"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="BorderBrush" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
我定义了几种颜色并想更改IsMouseOver
属性但是这似乎根本没有效果。
IsEnabled
工作正常。
我做错了什么?
看看您是否也在您的控件中设置 BorderBrush 属性,认为它会设置一些初始值。这将始终优先于通过您的样式所做的任何更改。
我试过下面的代码:
<Controls:NumericUpDown Minimum = "0" Maximum = "10000" Interval = "5" StringFormat="C2" Padding="5">
<Controls:NumericUpDown.Style>
<Style TargetType="Controls:NumericUpDown">
<Setter Property="Background" Value="Pink"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Background" Value="DeepSkyBlue"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="3"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Cornsilk"/>
<Setter Property="BorderBrush" Value="Purple"/>
<Setter Property="BorderThickness" Value="3"/>
</Trigger>
</Style.Triggers>
</Style>
</Controls:NumericUpDown.Style>
</Controls:NumericUpDown>
并且鼠标悬停边框效果根本不可见。背景运行良好,但 BorderBrush、BorderThickness 根本不起作用。这肯定是一个错误。
但是当我们应用此页面上给出的某些样式时,情况会发生变化。但仍然 borderbrush 没有改变。但 BorderThickness 工作正常。你可以试验一下。等我熟悉了以后再更新。