2010-02-05 9 views
0

인사말, 유형 CMessage의 개체 목록이 있습니다. 에서 INotifyPropertyChanged 인터페이스의 구현입니다의도 ObservableCollection + NotifyPropertyChanged

public ROWGUID {get;set;} 
public ObservableCollection<CAnswer> Answers 
{ 
get {return _Answer;} 
set 
{_Answer=value 
RaisePropertyChanged("Answer"); 
} 

} 

각 속성이 RaiseNotifyPropertyChanged 한 방법을 다음과 같이 CMessage 보일 수 있습니다. 요점은 다음과 같습니다.

  1. 메시지 선택 ObservableCollection Messages 목록에서; 더는 그 메시지가 실행 RaisePropertyChanged 왜
  2. 내가 선택한 메시지

몇 가지 답변을 추가하지? 그것은해야한다!

// get some Message from OC<Message> collection Message 
var message = Messages.First(); 
message.Answers.Add(new CAnswer { Text = "HURRDURR" }); // add an answer 

을하지만 첫 번째는 답변 모음의 CollectionChanged 이벤트를 발생이

var message = Messages.First(); 
var answers = new ObservableCollection<CAnswer>(); 
answers.Add(new CAnswer { Text = "LOL" }); 
message.Answers = answers; // triggers here 

을 할 때 CMessage에만 RaisePropertyChanged를 호출합니다 :

답변

2

당신은이 일을하고 있습니다. 두 번째는 Answers 컬렉션을 변경하여 set 메서드가 실행되게하여 CMessage 클래스의 PropertyChanged 이벤트를 발생시킵니다.

현재이 잘못하고 있습니다. 사람들이 컬렉션 속성을 설정하도록해서는 안됩니다. 가장 좋은 방법은 아니며 속성을 null (나쁜)로 설정할 수 있습니다. 읽기 전용 속성 컬렉션 만 있어야합니다. 사용자가 속성 변경에 관심이있는 경우 속성의 CollectionChanged 이벤트를 구독해야합니다.