Так что я использую внешний API, который предоставляет класс CatInfoType, который имеет, например, int number catid и string catname.Как изменить источник товара comboBox, когда это свойство comboBoxSelectionChanged называется WPF C#
У меня есть выпадающий со свойствами
< 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);
}
}
До сих пор все хорошо, но я хотел бы изменить элементы COMBOBOX после же 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;
}
Однако элементы combobox не изменяются. Я пытался сделать это несколькими способами. Ни один из них не получил результат.
Как я могу это сделать? Измените элементы comboBox "on live". После нажатия одного из этих пунктов я хочу очистить список и добавить новые элементы для отображения.
Надеюсь, что код выше и описание показывает, что я хотел бы сделать. Если у вас есть вопросы, не стесняйтесь спрашивать.