2010-08-05 2 views
1

Observable 컬렉션 내의 개체에 대한 속성에는 PropertyChangedEvent가 필요합니까? 예를 들면 : 다음 내 바인딩이 발생하지 않습니다 MyObjects[0].MyProperty = 1;을 실행할 경우 내가 무엇을 말할 수에서ObservableCollection 내의 속성에는 PropertyChangedEvent가 필요합니까?

public class MyObject 
{ 
    public int MyProperty { get; set;} 
} 

public class MyViewModel 
{ 
    ObservableCollection<MyObject> MyObjects = new ObservableCollection<MyObject>(); 
} 

. 그러나 MyObjects.Add(new MyObject());이라면 바인딩이 발생합니다.

답변

2

첫 번째 줄에서 MyProperty는 컬렉션 자체가 아니라 MyObjects 컬렉션의 첫 번째 개체에 있습니다. 따라서 MyObject 클래스는 WPF가 MyObject 인스턴스의 해당 속성 변경 내용을 수신 할 것으로 예상하는 경우 INotifyPropertyChanged를 구현해야합니다.

+0

그게 내가 생각하고 있었던거야. 알았어 고마워! –

2

ObservableCollection은 개체 변경이 아니라 컬렉션 변경에 대해서만 알리기 때문에 개체 INotifyPropertyChanged에 구현해야합니다.

WPF로 작업하는 경우 MyObject에서 DependencyObject를 파생시킬 수 있습니다. 그렇게하면 DependencyProperties으로 등록 정보를 선언 할 수 있습니다 (VisulStudio에는 이에 대한 멋진 스 니펫이 있음). 이는 자동으로 알려줍니다. ViewModel을 만드는 중이라면 어쨌든 말이됩니다.

+0

이것은 좋은 해결책이기도합니다. 감사! –

관련 문제