MyClass
클래스가 포함 된 ObservableCollection
이 있습니다.컬렉션의 변수가 변경된 경우 알 수 있습니다.
private ObservableCollection<MyClass> _myCollection;
public ObservableCollection<MyClass> MyCollection
{
get { return _myCollection; }
set
{
_myCollection= value;
}
}
컬렉션이 변경된 경우 C#
코드에 대해 알고 싶습니다.
그래서 컬렉션 이벤트에 등록 : CollectionChanged
레코드를 추가/삭제할 때 작동합니다. 여기에 registred
는 :
MyCollection.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(MyCollection_CollectionChanged);
뭔가가 클래스 내에서 변경 될 때이 이벤트가 작동 (또는 다른 이벤트 등록)하고 싶다.
처음에 나는 CollectionChanged
이벤트를 실행하여 클래스의 PropertyChanged
이벤트에 등록하려고 생각했습니다. 복잡하고 불필요한 것으로 보입니다.
wpf
의 binding
은 클래스 자체의 변화와 컬렉션 자체의 변화를 인식 할 수 있으므로 코드를 통해이를 수행 할 수 있다고 생각합니다.
내가 틀렸어? (더 정확한 질문은 : 누구든지이 방법을 알고 있습니까?)
+1을, 그러나 당신은'MyCollection' 속성 setter에서'MyCollection_CollectionChanged' 처리기를 추가/제거 할 것입니다 : 당신은이 같은 이벤트 내부에 코드를 리팩토링해야한다. – Clemens
@Clemens : 당신이 말하는 것을 볼 수 있습니다. 그렇게하지 않으면 감지하기 힘든 추악한 문제가 발생할 수 있습니다 (클래스 외부에서 MyCollection이 설정되고 이벤트가 더 이상 실행되지 않음). 유스 케이스? 예를 들어, 초기 데이터로드는'ExecuteOnAnyChangeOfCollection'을 유발하지 않을 수도 있습니다. 나는 속성을 읽기 전용으로 만들 것입니다. 토론이 질문의 범위를 벗어난 경우에도 힌트 (+1)에 감사드립니다. –
변경 사항을 UI에 표시하려면 항목의 속성 변경에 대해 CollectionChanged 이벤트를 호출해야합니다. 그리고 보통은 –