2013-06-19 16 views
5

私はMVVM Lightフレームワークを使用してWPFのプロジェクトを作成しています。私はに縛られているDataGridを持っています。今のところ、新しいアイテムを追加すると、DataGridは更新されず、設定ツールが決して起動しないためだと思います。アイテムが追加されたときにObservableCollectionのセッターが起動しない

public ObservableCollection<Worker> MasterWorkerList 
{ 
    get { return _masterWorkerList; } 
    set 
    { 
     System.Windows.MessageBox.Show("Firing"); 
     _masterWorkerList = value; 
     RaisePropertyChanged(() => MasterWorkerList); 
    } 
} 

メッセージボックスには、私がこれを呼び出す場合でも、表示されません:

DataManager.Data.MasterWorkerList.Add(_create.NewWorker()); 

にはどうすればいいので、私はUIを更新することができます発射するRaisePropertyChangedを得ることができますか?

私は無駄にこの記事でソリューションを使用して試してみた:ObservableCollection not noticing when Item in it changes (even with INotifyPropertyChanged)

何かアドバイスをいただければ幸いです。あなたが私のコードをもっと必要としたら、私に知らせてください。

答えて

9

オブジェクトのリストにパブリックセッターを置いてはいけません。あなたはむしろ

public MyClass(){ 
    _masterWorkerList = new ObservableCollection<Worker>(); 
    _masterWorkerList.CollectionChanged += OnCollectionChanged; 
} 

public ObservableCollection<Worker> MasterWorkerList 
{ 
    get { return _masterWorkerList; } 
} 

private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e){ 
    System.Windows.MessageBox.Show("Firing"); 
    //RaisePropertyChanged(() => MasterWorkerList); 
} 

CollectionChangedイベントが呼ばれ、あなたのコンストラクタでUTを設定する必要があるとき、あなたのObservableCollectionにAdd何か。あなたがより徹底したコントロールが必要な場合は、ObservableCollectionから継承し、AddItemRemoveItemメソッドを上書きすることができます。

関連する問題