2011-08-05 81 views
0

我需要根据绑定属性是否有数据来设置文本框的tabstop。属性几乎都是字符串 - 如果属性为null或空,我想禁用tabstop。WPF - 基于属性是否有数据来启用/禁用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}"/> 

在这种exmple,如果账户号码属性为null或空,我想要禁用tabstop。我正在使用Visual Studio 2010和.Net 4.0。谁能帮我吗?

更新:

感谢雷切尔她的回答。我能更新的风格中加入下面结合到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

使用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做到这一点

+0

非常感谢你的回答。这不完全是我想要的(但它非常接近),但它使我想到了答案。我会更新我的问题以反映 – jlnorsworthy

相关问题