2011-08-05 19 views
0

バインドされたプロパティにデータがあるかどうかに基づいて、テキストボックスのタブストップを設定する必要があります。プロパティはほとんどすべての文字列です。プロパティがnullまたは空の場合は、タブストップを無効にします。WPF - プロパティにデータがあるかどうかに基づいてタブ停止を有効/無効にする

私はこれらのテキストボックスにスタイルを使用しています。

<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> 

そしてここでは、私の使用方法の一例である:このexmpleで

<TextBox 
    Name="Account" 
    Style="{StaticResource ResourceKey=FauxLabel}" 
    Text="{Binding 
     Path=SelectedItem.AccountNumber, 
     ElementName=CrfResults}"/> 

、AccountNumberをプロパティがnullまたは空の場合、私はここで

は、私が現在使用しているスタイルですタブストップを無効にしたい私はVisual Studio 2010と.Net 4.0を使用しています。誰か助けてくれますか?

更新:彼女の答えをレイチェルに

感謝。値がある場合

 <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を使用してください:私はむしろ基礎となるバウンドプロパティよりも、textプロパティに結合するの下にトリガーを追加することによって、使用してそのスタイルを使用して、すべてのテキストボックスを処理するために、スタイルを更新することができました{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> 

おそらく

+0

すぎ代わりにDataTriggerの定期的なトリガとそれを行うことは、あなたの答えをありがとうございました。正確には私が望んでいたものではありませんでしたが、それは非常に近いものでしたが、それは私を答えに導きました。私は質問を反映するように更新します – jlnorsworthy