所以我使用外部API,提供名为CatInfoType的类,例如int number catid和string catname。
我有一个带有属性的组合框
< ComboBox x:Name="listOfCategories_comboBox" ... SelectionChanged="listOfCategories_comboBox_SelectionChanged" DisplayMemberPath="catname" />
然后在MainWindow cs文件中我有:
1)此类列表
List<CatInfoType> displayedCategories_List = new List<CatInfoType>();
2)在构造函数
中 var comboBox = listOfCategories_comboBox as ComboBox;
comboBox.ItemsSource = displayedCategories_List;
3)点击一些按钮后,我将填充组合框的值:
foreach (var item in allCategories_list)
{
if (item.catparent == 0)
{
displayedCategories_List.Add(item);
}
}
到目前为止一切都很好,但我想在调用相同的comboBoxSelectionChanged之后更改组合框项目:
private void listOfCategories_comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
CatInfoType selectedCategory = listOfCategories_comboBox.SelectedItem as CatInfoType;
int selectedCategoryId = selectedCategory.catid;
int selectedCategoryParentId = selectedCategory.catparent;
displayedCategories_List.Clear();
foreach (var item in allCategories_list)
{
if (item.catparent == selectedCategoryId)
displayedCategories_List.Add(item);
}
var comboBox = listOfCategories_comboBox as ComboBox; // I think those two lines are useless
comboBox.ItemsSource = displayedCategories_List;
}
然而,组合框项目没有改变。我试图以几种方式做到这一点。他们都没有得到结果。
我怎么可能这样做?更改组合框项目“在线直播”。按下其中一个项目后,我想清除列表并添加要显示的新项目。
我希望上面的代码和描述显示我想要做的事情。如果您有任何问题,请随时提出。
答案 0 :(得分:1)
尝试使用ObservableCollection<CatInfoType>
代替List<CatInfoType>