2013-06-19 2 views
5

MVVM Light 프레임 워크를 사용하여 WPF 프로젝트에서 작업하고 있습니다. 나는 ObservableCollection<Worker>에 묶여진 DataGrid을 가지고있다. 현재 새 항목을 추가 할 때 DataGrid은 업데이트되지 않으며 setter가 실행되지 않기 때문에 발생한다고 생각합니다.항목을 추가 할 때 ObservableCollection 설정자가 실행되지 않습니다.

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

가 어떻게 그래서 UI를 업데이트 할 수 있습니다 화재 RaisePropertyChanged를 얻을 수 있습니다 :

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

메시지 박스는 결코 나는이 전화를하는 경우에도 표시하지? 나는 아무 소용이 게시물의 솔루션을 사용하려고했습니다

은 : 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 이벤트를 호출 할 생성자에서 유타를 설정해야 할 때 당신에게 ObservableCollection에에 Add 뭔가. 더 많은 제어가 필요하다면 ObservableCollection에서 상속 받아 AddItemRemoveItem 메서드를 재정의 할 수 있습니다.

관련 문제