2017-01-18 2 views
1

내가 데이터와 같은 조직 구조를 가지고 IPropertyChanged.계단식

별칭/기호/그래픽 내에서 변경 될 때마다 Graphic 클래스 내에서 함수를 실행할 수 있기를 원합니다. 이 작업을 수행하는 가장 좋은 방법은 세 클래스 각각에 IPropertyChanged을 구현하는 것입니다. 그러나 정확히 변경된 내용에 대해 Graphic에 대한 참조를 얻는 동안 이들을 캐스케이드 할 수 있습니까?

참고 : 변경 사항은 일반적으로 Alias에있는 속성에 적용되지만 Symbol은 제거/추가하거나 이름을 바꿀 수 있습니다. 당신은 INotifyCollectionChangedINotifyPropertyChanged

를 구현하는 클래스 ObservableCollection<T>을 활용할 수

답변

2

는 기본적으로, 당신은 당신이 중첩하여 이벤트 깊은 수, 파생 클래스를 생성하고 몇 가지 방법 같은 것을 사용

public class Data 
    { 
     public ObservableCollection<String> InnerCollection { get; set; } 
    } 

    public class collection : ObservableCollection<Data> 
    { 
     protected override void InsertItem(int index, Data item) 
     { 
      item.InnerCollection.CollectionChanged += InnerCollection_CollectionChanged; 
      base.InsertItem(index, item); 
     } 

     private void InnerCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
     { 
      //Actually it does not make any sense. You may need to construct something special. But firing an event it would be enough 
      OnCollectionChanged(e); 
     } 

     protected override void RemoveItem(int index) 
     { 
      var date = base.Items[index]; 
      date.InnerCollection.CollectionChanged -= InnerCollection_CollectionChanged; 
      base.RemoveItem(index); 
     } 
    } 

를 재정의해야 원하는대로.

+0

건배! 그게 내가 필요한거야. –

+1

BindingList 을 사용하여 기본 제공 컬렉션을 만들 수도 있습니다. –