在XAML中更改TextBox焦点上的BorderBrush

时间:2016-07-25 17:44:22

标签: c# wpf xaml

问题

我一直在尝试在Focus上更改我的TextBox的BorderBrush几天,并且它不想工作。

我已经编写了一些人们建议的代码,但边框似乎只在TextBox的“右键单击”而不是焦点上发生变化?

这里是我写的代码:

        <TextBox Text="{Binding ServerURL, UpdateSourceTrigger=PropertyChanged}" Padding="2" BorderThickness="2" VerticalAlignment="Stretch" Grid.Row="1" FontFamily="Sans Serif" Foreground="#858585" FontSize="10px" FontWeight="Medium">
            <TextBox.Resources>
                <Style TargetType="{x:Type Border}">
                    <Setter Property="CornerRadius" Value="2"/>
                </Style>
            </TextBox.Resources>
            <TextBox.Style>
                <Style TargetType="{x:Type TextBox}">
                    <Style.Triggers>
                        <Trigger Property="IsFocused" Value="true">
                            <Setter Property="BorderBrush" Value="Red" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>

就像我提到的那样,当我右键单击TextBox时它确实有效,但我需要它来处理左键单击(当TextBox聚焦时)。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:0)

TextBox控件内置了一个“聚焦”视觉状态触发器,您可以更改该触发器的值,实际上非常简单,只需按照以下步骤操作:

步骤1.在页面中添加文本框。

第2步。右键单击文本框并选择:“EditTemplate”\“编辑副本...”

这将带您进入模板设计师阶段。

第3步。查看此图片:https://postimg.org/image/ocdn34is1/

答案 1 :(得分:-1)

申请FocusVisualStyle

<Window.Resources>
       <Style x:Key="ControlStyle1" TargetType="{x:Type Control}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Control}">
                        <Border BorderBrush="Red" BorderThickness="2"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
       </Style>
</Window.Resources>

<TextBox  FocusVisualStyle="{DynamicResource ControlStyle1}" Text="{Binding ServerURL, UpdateSourceTrigger=PropertyChanged}" Padding="2" BorderThickness="2" VerticalAlignment="Stretch" Grid.Row="1" FontFamily="Sans Serif" Foreground="#858585" FontSize="10px" FontWeight="Medium"/>