0

当文本为“ABC”时,我试图设置文本框的宽度属性,但是触发器不起作用。宽度保持为“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>
4

1 回答 1

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

于 2013-07-29T09:15:17.027 回答