2016-04-30 7 views
0

したがって、例えばint number catidとstring catnameを持つCatInfoTypeというクラスを提供する外部APIを使用しています。comboBoxSelectionChangedプロパティがWPFと呼ばれるときにcomboBoxアイテムのソースを変更する方法C#

私は私が持っているメインウィンドウのCSファイル内の[プロパティ

< ComboBox x:Name="listOfCategories_comboBox" ... SelectionChanged="listOfCategories_comboBox_SelectionChanged" DisplayMemberPath="catname" /> 

とのコンボボックスがあります。このクラスの

1)リスト

List<CatInfoType> displayedCategories_List = new List<CatInfoType>(); 

2)コンストラクタ

 var comboBox = listOfCategories_comboBox as ComboBox; 
     comboBox.ItemsSource = displayedCategories_List; 
中を

3)afteすべてが大丈夫ですが、私は同じcomboBoxSelectionChangedが呼び出された後、コンボボックスの項目を変更したいと思い、今まで

  foreach (var item in allCategories_list) 
      { 
       if (item.catparent == 0) 
       { 
        displayedCategories_List.Add(item); 
       } 
      } 

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; 
    } 

しかしコンボボックスRいくつかのボタンは、その後、私はコンボボックスの値を満たしていますクリックしますアイテムは変更されていません。私はいくつかの方法でそれをやろうとしていました。彼らの誰も結果を得ていない。

どうすればいいですか?コンボボックスのアイテムを「ライブ中」に変更します。それらのアイテムの1つを押すと、リストをクリアして、表示する新しいアイテムを追加します。

私は上記のコードを希望し、説明は私がしたいことを示しています。ご質問がありましたらお気軽にお問い合わせください。

答えて

1

試してみるObservableCollection<CatInfoType>List<CatInfoType>

関連する問題