我有下面的XAML,它试图将窗口中所有TextBox的边框设置为红色OnMouseOver。当鼠标位于文本框上时,会设置FontSize和Foreground属性,但BorderBrush仅在恢复到其先前的默认值之前暂时设置。我希望BorderBrush保持红色,直到鼠标不再在文本框上。任何想法为什么会这样?
<Window x:Class="StylesApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Width" Value="250" />
<Setter Property="Height" Value="50" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="FontSize" Value="20" />
<Setter Property="Foreground" Value="Red" />
<Setter Property="BorderBrush" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<TextBox>
My TextBox
</TextBox>
</Grid>
</Window>
答案 0 :(得分:0)
当IsMouseOver属性设置为true时,我假设TextBox有另一个BorderBrush动画。但是,此触发器仅在BorderThickness正好为1.0时才有效。因此,要克服这个问题,您可以将BorderThickness更改为1.01或触发器中的某些内容,只要鼠标位于TextBox上,BorderBrush就会保持红色。
<Style TargetType="{x:Type TextBox}">
<Setter Property="Width" Value="250" />
<Setter Property="Height" Value="50" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderThickness" Value="1.01" />
<Setter Property="FontSize" Value="20" />
<Setter Property="Foreground" Value="Red" />
<Setter Property="BorderBrush" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>