2012-02-08 15 views
1

私はComboBoxとTextBoxを持っていて、ComboBoxで最初の項目が選択されているときにTextBoxのみを有効/無効にしたいとします。Understandig DataTrigger

このコードは動作します(最初の項目が選択されている場合無効)

  <ComboBox SelectedIndex="{Binding Mode}"> 
       <ComboBoxItem>Mode 1</ComboBoxItem> 
       <ComboBoxItem>Mode 2</ComboBoxItem> 
       <ComboBoxItem>Mode 3</ComboBoxItem> 
      </ComboBox> 
       <TextBox Text="{Binding ValueNotForMode1}"> 
        <TextBox.Style> 
         <Style> 
          <Style.Triggers> 
           <DataTrigger Binding ="{Binding Mode}" Value="0"> 
            <Setter Property="TextBox.IsEnabled" Value="False"/> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </TextBox.Style> 
       </TextBox> 

この1つは動作しません。(最初の項目が選択されている場合に有効)

  <ComboBox SelectedIndex="{Binding Mode}"> 
       <ComboBoxItem>Mode 1</ComboBoxItem> 
       <ComboBoxItem>Mode 2</ComboBoxItem> 
       <ComboBoxItem>Mode 3</ComboBoxItem> 
      </ComboBox> 
       <TextBox IsEnabled="False" Text="{Binding ValueForMode1}"> 
        <TextBox.Style> 
         <Style> 
          <Style.Triggers> 
           <DataTrigger Binding ="{Binding Mode}" Value="0"> 
            <Setter Property="TextBox.IsEnabled" Value="True"/> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </TextBox.Style> 
       </TextBox> 

はそれができませんDataTrigger経由でコントロールを有効にするには?

または、トリガーが発生していないときに、どのように制御するのか、どのようにすればいいのかを教えてください。

答えて

3

IsEnabled="False"TextBoxからTextBox.Styleに移動します。

<Setter Property="TextBox.IsEnabled" Value="False" /> 

明確に理解するために、Dependency Property Value Precedenceを参照してください。

+0

ありがとうございます。 最初のケースでこれがなぜ必要でないのか知っていますか? Trueはデフォルト値だからだと思います。 – MTR

+0

はい、それが理由です。 – LPL

関連する問題