我的所有文本框都有这样的全局样式:
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
</Trigger>
</Style.Triggers>
<Setter Property="BorderBrush" Value="#007acc"/>
<Setter Property="Foreground" Value="GhostWhite"/>
<Setter Property="Background" Value="#49494e"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Width" Value="250"/>
<Setter Property="Margin" Value="0,0,0,5"/>
</Style>
当我将鼠标悬停在文本框上时,其边框颜色将在几个瞬间正确捕捉到红色,但默认动画将接管并将其更改为默认文本框蓝色边框颜色。
如何在不重新定义整个文本框模板的情况下禁用或覆盖此动画?我只想让边框颜色保持红色,而鼠标光标悬停在文本框上。
答案 0 :(得分:2)
您问题的一个解决方案是更改Template
TextBox
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
</Trigger>
</Style.Triggers>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1">
<ScrollViewer x:Name="PART_ContentHost"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="#007acc"/>
<Setter Property="Foreground" Value="GhostWhite"/>
<Setter Property="Background" Value="#49494e"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Width" Value="250"/>
<Setter Property="Margin" Value="0,0,0,5"/>
</Style>
答案 1 :(得分:0)
这实际上是属性优先的已知问题。基本上,边框画笔的本地属性设置器与您的触发器发生冲突。这个Msdn article更全面地解释了它,但基本上如果你删除了
<Setter Property="BorderBrush" Value="#007acc"/>
你的触发器应该可以正常工作