2012-02-14 10 views
2

働いていない私はDataContextを設定します。のItemsSource結合とのPropertyChanged

this.DataContext = new MainWindowViewModel(); 

を、私はそれが働いているMainWindowViewModelのコンストラクタに新しいTabItemを追加するとき、私は、TabControlItemsSourceを結合しています!しかし、イベント(Click)に新しいTabItemを追加しても効果はありません。

私は、このプロパティを持っている:

List<Item> _listOfItem; 
public List<Item> ListOfItem 
{ 
    get 
    { 
     return _listOfItem; 

    } 
    set 
    { 
     _listOfItem = value; 
     PropertyChanged(this, new PropertyChangedEventArgs("ListOfItem")); 
    } 
} 

助けてください。

答えて

2

コレクションの変更をUIに通知する場合は、Listではなく、ObservableCollectionを使用する必要があります。

ObservableCollection<Item> _listOfItem; 
public ObservableCollection<Item> ListOfItem 
{ 
    get 
    { 
     return _listOfItem; 
    } 
    set 
    { 
     _listOfItem = value; 
     PropertyChanged(this, new PropertyChangedEventArgs("ListOfItem")); 
    } 
} 

あなただけのビューモデルタイプの建設後の基準が変更された場合、あなたのListOfItemためPropertyChangedイベントを起動する必要があります注意してください。変更されない場合は、簡単な自動プロパティーでListOfItemになります。

+0

ObservableCollectionでPropertyChangedを呼び出す必要はありません。だからあなたはプロパティを取り除くことができ、 "Public ObservableCollection _listOfItem;"のままにしておきます。注意してください、これは挿入と削除(update = deleteとinsertのあと)でしか機能しません。 –

+1

いいえ、UI要素に通知するためにobservableコレクションへの参照が変更された場合は、PropertyChangedイベントを呼び出す必要があります。それに関して、他のどのプロパティタイプとも変わりません。 – devdigital

+0

ビューがアクティブな間にobservablecollectionの参照が変更される私のすべてのソースコードに、単一のビューはありません。私は更新をサポートするためにOCに格納されているクラスにのみINotifyPropertyChangedを追加します。だから私はあなたがこれをやる理由を理解していますが、ほとんどの場合、財産は必要ありません。 –

1

コレクションの追加と削除を確認するには、UIのObservableCollectionを使用する必要があります。 ListがUIのために構築されたので、コンストラクターで機能しました。

1

リストは機能しません。

ListOfItemにはObservableCollectionを使用する必要があります。

関連する問題