2016-11-24 129 views
0

如果我有一個組合框中的項目是CFG_REG,INT_REG,ST_REG,CMD_REG(它們在枚舉中定義),如果我選擇項目CFG_REG,那麼我應該在另一個組合框中同樣顯示GCR,PCR,LCR,CR,GSR,PSR,如果我選擇INT_REG,我應該顯示IE,就像那樣,..我該怎麼做?如何根據wpf中的另一個combox項目來綁定combobox中的itemsource?

 <ComboBox Grid.Column="2" 
         Grid.Row="1" 
         SelectedIndex="{Binding CMDIndex, Mode=TwoWay}" 
         x:Name="Combobox1" 
         Margin="0,0,1,0" 
         VerticalAlignment="Top"> 
        </ComboBox> 

    <ComboBox Grid.Column="3" IsTextSearchEnabled="True" 
         Grid.Row="1" 
         x:Name="combobox2" 
         ItemsSource="{Binding }" 
         SelectedItem="{Binding RegisterIndex,Mode=TwoWay}" 
         VerticalAlignment="Top" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name" 
         Margin="0,0,1,0"> 

        </ComboBox> 

回答

1

你應該的項目在您的視圖模型/代碼的集合(即ICollection的或觀察到的集合)綁定到第一個組合框的的ItemsSource。您可以將第一個組合框的'SelectedItem'綁定到/ view模型後面的代碼中的屬性,然後在該屬性的setter中,您應該過濾掉另一個將綁定到其他組合框的Collection。我希望你明白這個主意。

例如:

<ComboBox ItemsSource ={Binding Collection1} SelectedItem ={Binding SelectedItem} .../> 

在代碼:

public ICollection Collection1 {get;set;} 
public ICollection Collection2 {get;set;} 

public string SelectedItem 
{ 
get {..} 
set{ 
SelectedItem = value; 
ChangeSecondCollection(value); 
} 

public void ChangeSecondCollection(string value) 
{ 
Collection2 = //Filter your second collection here. 
} 
+0

對不起,我沒有得到,你可以用elabarate上面的例子@羅希特 - GARG我提到 –

相關問題