一个简单的WPF触发器不起作用

时间:2013-07-29 09:09:35

标签: wpf triggers

我正在尝试在文本为“ABC”时设置文本框的width属性,但触发器不起作用。宽度仍为'40'。

        <TextBox Height="23" HorizontalAlignment="Left" Margin="295,211,0,0" Name="textBox1" VerticalAlignment="Top" Width="40"  Text="{Binding Text}"  >
            <TextBox.Style>
                <Style TargetType="TextBox">
                    <Style.Triggers>
                        <Trigger Property="Text" Value="ABC" >
                            <Setter Property="Width" Value="120"></Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>

1 个答案:

答案 0 :(得分:1)

您需要删除Width定义中的TextBox属性,因为这将优先于Trigger。在Style设置器中设置宽度如下:

    <TextBox Height="23" HorizontalAlignment="Left" Margin="295,211,0,0" Name="textBox1" VerticalAlignment="Top" Text="{Binding Text}"  >
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Setter Property="Width" Value="40"/>
                <Style.Triggers>
                    <Trigger Property="Text" Value="ABC" >
                        <Setter Property="Width " Value="120"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>

更新 -

与触发器相比,本地值具有更高的优先级。请参阅此内容 - Dependency Property Value Precedence