选择WPF文本框边框时?

选择WPF文本框边框时?,wpf,textbox,styling,Wpf,Textbox,Styling,我想让WPF文本框有一个深蓝色边框,厚度等于1。我想使WPF具有此边框(暗蓝色,厚度设置为1),即使选择了文本框 我试着用下面的代码来完成这个任务。然而,它根本不起作用有什么想法或提示吗?任何帮助都将不胜感激。 <Style x:Key="ReadOnlyLargeTextBox" TargetType="{x:Type TextBox}" > <Setter Property="Height" Value="80"/> <Set

我想让WPF文本框有一个深蓝色边框,厚度等于1。我想使WPF具有此边框(暗蓝色,厚度设置为1),即使选择了文本框

我试着用下面的代码来完成这个任务。然而,它根本不起作用有什么想法或提示吗?任何帮助都将不胜感激。

  <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属性

当“IsMouseOver”为True和False时,您有相同的逻辑。更改一个,您应该会看到一些内容。

检查FrameworkElement对象的属性(TextBox的祖先)。它的目的是定义选择元素时应用的样式。

请看这是您想要的吗

<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> 

我认为您的问题是由于触发器属性值包含TextBox。您只需要属性的名称

    <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>

“即使选择了文本框”:您的意思是什么?当文本框被选中时,边框不会改变,所以你根本不需要触发器。。。只要把二传手放进去就行了