我需要根据绑定属性是否包含数据来设置文本框的tabstop。这些属性几乎都是字符串 - 如果属性为null或为空,我想禁用tabstop。
我正在使用这些文本框的样式。
以下是我目前使用的风格:
<Style TargetType="TextBox" x:Key="FauxLabel">
<Setter Property="Background" Value="Transparent" />
<Setter Property="IsTabStop" Value="True" />
<Setter Property="IsReadOnly" Value="True" />
<!-- rest of setters truncated -->
</Style>
这是我用法的一个例子:
<TextBox
Name="Account"
Style="{StaticResource ResourceKey=FauxLabel}"
Text="{Binding
Path=SelectedItem.AccountNumber,
ElementName=CrfResults}"/>
在这个例子中,如果AccountNumber属性为null或为空,我想禁用tabstop。我正在使用Visual Studio 2010和.Net 4.0。任何人都可以帮助我吗?
更新
感谢Rachel的回答。通过添加下面绑定到text属性的触发器而不是底层绑定属性,我能够使用该样式更新样式以处理所有文本框:
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="IsTabStop" Value="False">
</Setter>
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="IsTabStop" Value="False">
</Setter>
</Trigger>
</Style.Triggers>
答案 0 :(得分:0)
使用DataTrigger检查值是否为{x:Null}
<Style TargetType="TextBox" x:Key="FauxLabel">
<Setter Property="IsTabStop" Value="True" />
<Style.Triggers>
<DataTrigger Property="{Binding ElementName=CrfResults, Path=SelectedItem.AccountNumber}" Value="{x:Null}">
<Setter Property="IsTabStop" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
您可以使用常规触发器而不是DataTrigger来执行此操作