我目前遇到的问题是,在'IsFocused'属性中,我能够触发文本框的背景更改,但是当我想更改BorderBrush时,它不起作用。
<TextBox Padding="2" FontFamily="Sans Serif" Foreground="Red" FontSize="10px" FontWeight="Medium" Width="200" BorderThickness="2" VerticalAlignment="Center">
<TextBox.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="2"/>
</Style>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="BorderBrush" Value="#858585"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
任何人都可以看到为什么这不起作用的原因?
我刚刚发现,当我'右键单击'时,它会变为红色?我希望当用户点击文本框时它会变为红色。
答案 0 :(得分:3)
尝试使用该代码
<TextBox
Padding="2" FontFamily="Sans Serif"
Foreground="Red" FontSize="10px"
FontWeight="Medium" Width="200"
VerticalAlignment="Center">
<TextBox.Style>
<Style BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
<Setter Property="BorderThickness" Value="2"/>
<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="Red"/>
<Setter Property="BorderThickness" TargetName="bg" Value="2"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" TargetName="bg" Value="Red"/>
<Setter Property="BorderThickness" TargetName="bg" Value="2"/>
</Trigger>
<Trigger Property="IsFocused" Value="False">
<Setter Property="BorderBrush" TargetName="bg" Value="#858585"/>
<Setter Property="BorderThickness" TargetName="bg" Value="2"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="BorderBrush" TargetName="bg" Value="#858585"/>
<Setter Property="BorderThickness" TargetName="bg" Value="2"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
</TextBox>
答案 1 :(得分:0)
这是由植入文本框样式本身的视觉状态触发器引起的,它们会覆盖您要添加的任何触发器,更改您必须更改样式的边框颜色,只需按照以下步骤操作即可:< / p>
步骤1:以混合方式打开您的项目,因为它更适合设计控件。
第2步:在页面中添加文本框。
第3步:右键单击您的文本框并选择:&#34; EditTemplate&#34; \&#34;编辑副本...&#34;
这将带您进入模板设计师阶段。
第4步:检查此图片:https://postimg.org/image/ocdn34is1/
答案 2 :(得分:0)
尝试使用TextBox的GotFocus和LostFocus事件,并从后面的代码中执行。
<TextBox x:Name="txtBox" ...
GotFocus="YourHandler1" LostFocus="YourHandler2"> ... </TextBox>
然后,您必须在YourHandler1中将边框颜色设置为红色,并在YourHandler2中将其设置回默认值。 (&#39;发件人&#39;将是你的TextBox,所以这没什么大不了的。)