2016-11-22 11 views
0

私のXamlにリストビューがあり、データモデルのActiveListプロパティにバインドされています。コレクションが変更されたときにリストビューがリフレッシュされない

何が選択されたかに基づいて、リストの内容を別のリストに変更したいと思います。私がviewmodelでデバッグすると、リストに新しいリストが割り当てられているのがわかりますが、これはUIに反映されていません!

リストは、INotifyCollectionChangedインタフェースを実装するObservableCollectionsです。だから、なぜUIがリフレッシュされていないのですか?

のViewModel:

public TcgType SelectedTcgType 
     { 
      get { return _selectedTcgType; } 
      set 
      { 
       Set(ref _selectedTcgType, value); 
       switch (value.Name) 
       { 
        case "Yugioh": 
         ActiveCards = YugiohCards; 
         break; 

        case "Hearthstone": 
         ActiveCards = HearthStoneCards; 
         break; 
        case "DBZ": 
         ActiveCards = DbzCards; 
         break; 
        case "Pokemon": 
         ActiveCards = PokemonCards; 
         break; 

       } 

       //Set(ref _selectedTcgType, value); 
      } 
     } 

Set関数:

public bool Set<T>(ref T field, T value, 
      [CallerMemberName] string propertyName = null) 
     { 
      if (EqualityComparer<T>.Default.Equals(field, value)) 
       return false; 

      field = value; 
      RaisepropertyChanged(propertyName); 
      return true; 
     } 
+0

は、たぶん、あなたが必要とする[ObservableCollectionEx](http://stackoverflow.com/questions/269073/observablecollection-that-also-monitors-changes-on-the-elements-in-collection) –

答えて

0

Set法に基づくが、私は、プロパティ、イベントが収集のために変更さ上げされませんでした。リストビューで選択された値のみ。

私はswitch文からRaisePropertyChanged("ActiveList")を追加して更新しました。

protected void RaisepropertyChanged(string propertyName) 
     { 
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
     } 
関連する問題