2011-06-08 68 views
0

如何在ComboBox上設置觸發器,當SelectedIndex大於0時(基本上,選擇選項時),另一個ComboBox被修改。我有兩個ComboBox es,但用戶只能從其中一箇中選擇。因此,如果我從ComboBox A選擇第一個選項,那麼ComboBox B應得到0的SelectedIndex,反之亦然。當`SelectedIndex`大於0時觸發

我試着玩弄以下但不知道如何捕捉所需的邏輯。

<ComboBox ItemsSource="{Binding AvailableStatuses}" 
      SelectedItem="{Binding SelectedStatus}" 
      Grid.Row="1" Grid.Column="1" DisplayMemberPath="Name" 
      x:Name="Statuses"> 
    <ComboBox.Style> 
     <Style TargetType="{x:Type ComboBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=Decisions}" Value="0"> 
        <Setter Property="SelectedIndex" Value="0" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ComboBox.Style> 
</ComboBox> 

我應該看什麼樣的觸發器?

回答

3

我認爲這將是更簡單,只是在視圖模型這個邏輯,只要你的「SelectedStatus」屬性你可以寫一個返回真/假轉換器是。如果進來的值大於0,則將其他屬性(「SelectedStatus2」?)設置爲0,反之亦然。

+0

我同意Ben K.在XAML中做這個事情只會是非常棘手的,如果可能的話。將邏輯編碼到虛擬機或在視圖中使用代碼。 另一種方法是用組合框作爲項目編寫一個帶有項目控件的用戶控件。然後用戶控件將有代碼來強制只選擇一個組合框。 – 2011-06-09 14:00:48

1

何不的ComboBox B中的SelectedIndex財產只是綁定到ComboBox A的SelectedIndex財產?

1

如果將selectedIndex大於0

<DataTrigger Binding="{Binding ElementName=Decisions, 
    Converter={StaticResource IsValueGreaterThanZeroConverter}}" Value="True"> 
相關問題