2016-04-30 1 views
0

Так что я использую внешний 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". После нажатия одного из этих пунктов я хочу очистить список и добавить новые элементы для отображения.

Надеюсь, что код выше и описание показывает, что я хотел бы сделать. Если у вас есть вопросы, не стесняйтесь спрашивать.

ответ

1

попытаться использовать ObservableCollection<CatInfoType> вместо List<CatInfoType>

Смежные вопросы