1
클래스 내의 모든 항목에 CollectionChanged 이벤트를 추가하려고합니다.컬렉션 유형을 모른 채 ObservableColleciton에 CollectionChanged를 추가하십시오.
public class A
{
string OneString;
string TwoString;
ObservableCollection<B> CollectionOfB;
}
public class B
{
string ThreeString;
string FourString;
string FiveString;
ObservableCollection<C> CollectionOfC;
}
public class C
{
string SixString;
string SevenString;
}
내 코드는 현재 클래스 A로 시작에서 INotifyPropertyChanged를 사용하고 각 항목하여 PropertyChanged 이벤트를 할당하고 재귀 적으로 각각의 서브 클래스 할당을 통해 드릴 다운 클래스의 각 항목에서 보이는
이하여 PropertyChanged 이벤트 : 나는 다음과 같은 있다고 가정 각 수준에서.
내 문제는 ObservableCollection에 CollectionChanged 이벤트를 할당하려고 할 때 발생합니다. 내 코드는 런타임까지 ObservableColleciton의 항목 유형을 알 수 없습니다. 내가 런타임 때까지 클래스 형을 몰라도 CollectionChanged 이벤트 처리기를 추가 할 수 있습니까
{"Unable to cast object of type 'System.Collections.ObjectModel.ObservableCollection`1[SOC.Model.Code3]' to type 'System.Collections.ObjectModel.ObservableCollection`1[System.Object]'."}
: 나는 다음과 같은 오류를 얻을 CollectionChanged 이벤트 처리기를 추가하려고하면
protected virtual void RegisterSubPropertyForChangeTracking(INotifyPropertyChanged propertyObject)
{
propertyObject.PropertyChanged += new PropertyChangedEventHandler(propertyObject_PropertyChanged);
// if this propertyObject is also an ObservableCollection then add a CollectionChanged event handler
if (propertyObject.GetType().GetGenericTypeDefinition().Equals(typeof(ObservableCollection<>)))
{
((ObservableCollection<object>)propertyObject).CollectionChanged +=
new NotifyCollectionChangedEventHandler(propertyObject_CollectionChanged);
}
}
: 나는 다음과 같은 코드가 있습니다