2012-05-07 100 views
0

如何在進行組合框選擇時設置文本框的屬性。例如,當組合框選擇時,設置背景和文本框的IsEnabled屬性。我想要它純粹在XAML中不在代碼後面。我使用MVVM當進行組合框選擇時設置文本框的屬性WPF XAML

+1

這個問題是相似的:http://stackoverflow.com/questions/2561820/wpf-visibility-of-基於元素的組合選擇 – 2012-05-07 11:33:04

回答

0

如何啓用textBox1中,只有當SelectedItems是1

<TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120"> 
     <TextBox.Style> 
      <Style TargetType="{x:Type TextBox}"> 
       <Setter Property="IsEnabled" Value="False"></Setter> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=comboBox1, Path=SelectedIndex}" Value="1"> 
         <Setter Property="Background" Value="Green"></Setter> 
         <Setter Property="IsEnabled" Value="True"></Setter> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 
    <ComboBox Height="22" HorizontalAlignment="Left" Margin="246,119,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" /> 

我只是想用XAML無法達到的條件值=「1」或「3」,即在數據觸發的關係比平等更復雜。

對於這種情況,你需要一個轉換器。 此鏈接可以幫助你

How to get DataTemplate.DataTrigger to check for greater than or less than?

+0

如何在數據觸發器中有兩個或多個條件,或爲屬性指定多個值,例如 。我想爲SelectedIndex指定多個值 – user1379584

0

您可以使用組合的選擇對象datatrigger。看看以前的這個問題:WPF Visibility of a UI element based on combo selection

嘗試生成觸發器時,selecteditem是{x:Null}。爲此,您需要將控件放入DataTemplate中,並將觸發器放入模板的觸發器集合中。

這裏是一個示例代碼(未測試,請你自己檢查):

<TextBox Height="23" HorizontalAlignment="Left" Margin="246,177,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" IsEnabled" Value="True" /> 

<ComboBox Height="22" HorizontalAlignment="Left" Margin="246,119,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" /> 

<DataTemplate.Triggers> 
    <Trigger SourceName="comboBox1" Property="ComboBox.SelectedItem" Value="{x:Null}"> 
     <Setter TargetName="textbox2" Property="TextBox.IsEnabled" Value="False" /> 
    </Trigger> 
</DataTemplate.Triggers> 
+0

我們可以這樣做 <條件綁定=「{Binding ElementName = cmbInstrumentType,Path = SelectedIndex}」Value =「2」/> user1379584

+0

看起來像你正在採取逆邏輯。爲什麼不檢查SelectedItem == null? – 2012-05-08 12:30:56

+0

你怎麼可以給它代碼 – user1379584