我有一个TextBox,我希望只有当另一个TextBox中包含文本时才能启用它。我将第一个TextBox的Text.Length属性绑定到第二个框上的IsEnabled属性。我也尝试绑定第一个框的Text属性并使用转换器转换为bool。这两种方法都会导致第二个框在文本输入第一个框时启用,但是当文本被删除时,第二个框不会被禁用。
我已尝试将NotifyOnSourceUpdated和NotifyOnTargetUpdated设置为true,但都没有任何效果。
<TextBox Name="textBox1"/>
<TextBox Name="textBox2" IsEnabled="{Binding ElementName=textBox1, Path=Text.Length}"/>
所以我的问题是当textBox1中的文本被删除时,textBox2被禁用了。
答案 0 :(得分: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
的{{1}}属性。因此,要么您需要使用int
,要么通过上面发布的converter
进行操作。