如何在调用此comboBoxSelectionChanged属性时更改comboBox项目源代码WPF C#

时间:2016-04-30 17:13:45

标签: c# wpf combobox selectionchanged

所以我使用外部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;
    }

然而,组合框项目没有改变。我试图以几种方式做到这一点。他们都没有得到结果。

我怎么可能这样做?更改组合框项目“在线直播”。按下其中一个项目后,我想清除列表并添加要显示的新项目。

我希望上面的代码和描述显示我想要做的事情。如果您有任何问题,请随时提出。

1 个答案:

答案 0 :(得分:1)

尝试使用ObservableCollection<CatInfoType>代替List<CatInfoType>