WPF TextBox Border when selected?
我想让 WPF TextBox 有一个 DarkBlue 边框和等于 1 的粗细。我想让 WPF 有这个边框( DarkBlue,粗细设置为 1 ),即使选择了 TextBox 也是如此。
我尝试通过以下代码执行此任务。但是,它根本不起作用。任何想法或提示?任何帮助将不胜感激。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <Style x:Key="ReadOnlyLargeTextBox" TargetType="{x:Type TextBox}"> <Setter Property="Height" Value="80"/> <Setter Property="MaxHeight" Value="80"/> <Setter Property="VerticalScrollBarVisibility" Value="Visible"/> <Style.Triggers> <Trigger Property="TextBox.IsMouseOver" Value="True"> <Setter Property="BorderBrush" Value="DarkBlue"/> <Setter Property="BorderThickness" Value="1"/> </Trigger> <Trigger Property="TextBox.IsMouseOver" Value="False"> <Setter Property="BorderBrush" Value="DarkBlue"/> <Setter Property="BorderThickness" Value="1"/> </Trigger> </Style.Triggers> </Style> |
P.S 请注意,文本框没有 IsSelected 属性。
看看是不是你想要的...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{x:Type TextBox}"> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Padding" Value="1"/> <Setter Property="AllowDrop" Value="true"/> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TextBox}"> <Border x:Name="bg" BorderBrush="#FF825E5E" BorderThickness="1"> <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="bg" Value="DarkBlue"/> <Setter Property="BorderThickness" TargetName="bg" Value="2"/> </Trigger> <Trigger Property="IsFocused" Value="True"> <Setter Property="BorderBrush" TargetName="bg" Value="DarkBlue"/> <Setter Property="BorderThickness" TargetName="bg" Value="2"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> |
我认为您的问题是由于 Trigger 属性值包含 TextBox。您只需要属性的名称。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <Style x:Key="ReadOnlyLargeTextBox" TargetType="{x:Type TextBox}"> <Setter Property="Height" Value="80"/> <Setter Property="MaxHeight" Value="80"/> <Setter Property="VerticalScrollBarVisibility" Value="Visible"/> <Style.Triggers> <Trigger Property="IsFocused" Value="True"> <Setter Property="BorderBrush" Value="Blue"/> <Setter Property="BorderThickness" Value="1"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" Value="Blue"/> <Setter Property="BorderThickness" Value="1"/> </Trigger> </Style.Triggers> </Style> |
检查 FrameworkElement 对象(TextBox 的祖先)的 FocusVisualStyle 属性。它的目的是定义选择元素时应用的样式。
当"IsMouseOver"为真和假时,你有相同的逻辑。换一个,你应该会看到一些东西。