1

我有一个 TextBox,只有在另一个 TextBox 中有文本时才想启用它。我将第一个 TextBox 的 Text.Length 属性绑定到第二个框的 IsEnabled 属性。我还尝试绑定第一个框的 Text 属性并使用转换器转换为布尔值。这两种方法都会导致在第一个框中输入文本时启用第二个框,但在删除文本时不会禁用第二个框。

我尝试将 NotifyOnSourceUpdated 和 NotifyOnTargetUpdated 设置为 true,但都没有任何效果。

<TextBox Name="textBox1"/>
<TextBox Name="textBox2" IsEnabled="{Binding ElementName=textBox1, Path=Text.Length}"/>

所以我的问题是删除 textBox1 中的文本时需要禁用 textBox2 什么。

4

1 回答 1

2

这应该工作 -

<TextBox Name="textBox1"/>
<TextBox Name="textBox2">
   <TextBox.Style>
       <Style TargetType="TextBox">
           <Style.Triggers>
               <DataTrigger Binding="{Binding Text.Length, ElementName=textBox1}"
                                     Value="0">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
       </Style>
    </TextBox.Style>
</TextBox>

您的代码的问题是您将IsEnabled bool属性绑定到Text.Length类型为int. 所以,要么你需要使用,要么按照我上面发布的那样converter完成triggers

于 2012-10-24T12:38:27.063 回答