如果我在一个组合框中有项目是CFG_REG,INT_REG,ST_REG,CMD_REG(在枚举中定义),如果我选择项目CFG_REG,那么我应该在另一个组合框中显示GCR,PCR,LCR,CR,GSR,PSR ,如果我选择INT_REG我应该显示IE,就像那样,..我该怎么做?
<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>
答案 0 :(得分:1)
您应该将视图模型/代码中的项目集合(即ICollection或Observable集合)绑定到第一个组合框的itemsSource。您可以绑定&#39; SelectedItem&#39;将第一个组合框添加到代码隐藏/视图模型中的属性,然后在此属性的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.
}