[英]WPF Textbox Trigger IsMouseOver
It's so difficult now with styles in wpf. 现在使用wpf中的样式是如此困难。 Why Triggers does not work???
为什么触发器不起作用???
<TextBox x:Name="txbUsername" VerticalAlignment="Center" HorizontalAlignment="Center"
Width="350" Height="20" Margin="5 0 0 0" BorderThickness="0 0 0 1" Background="#eff0f1">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="14"></Setter>
<Setter Property="FontFamily" Value="Verdana, Geneva, sans-serif"></Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderThickness" Value="0 0 0 1"></Setter>
<Setter Property="BorderBrush" Value="#a70711"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
You need to define a custom ControlTemplate
: 您需要定义一个自定义
ControlTemplate
:
<TextBox x:Name="txbUsername" VerticalAlignment="Center" HorizontalAlignment="Center"
Width="350" Height="20" Margin="5 0 0 0" BorderThickness="0 0 0 1" Background="#eff0f1">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontSize" Value="14"></Setter>
<Setter Property="FontFamily" Value="Verdana, Geneva, sans-serif"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="BorderThickness" Value="0 0 0 1"></Setter>
<Setter Property="BorderBrush" Value="#a70711"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
The reason for this is that there are some triggers defined in the default ControlTemplate
that cannot be override by simply defining some custom Style
triggers. 原因是默认
ControlTemplate
中定义了一些触发器,这些触发器不能通过简单地定义一些自定义Style
触发器来覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.