2011-09-09 19 views
2
namespace MimicCreation 
{ 

    public class TreeManager : INotifyPropertyChanged 
    { 

     public TreeManager() { } 

     public TreeManager(string title, string type, string filename) 
     { 
      this.childElementsValue.CollectionChanged += this.OnCollectionChanged; 
      Title = title; 
      Type = type; 
      FileName = filename; 
     } 

     public string Title { get; set; } 

     public string Type { get; set; } 

     public string FileName { get; set; } 

     public override string ToString() 
     { 
      return Title; 
     } 

     private ObservableCollection<TreeManager> childElementsValue = new ObservableCollection<TreeManager>(); 

     public ObservableCollection<TreeManager> ChildElements 
     { 
      get { return childElementsValue; } 
      set { childElementsValue = value; } 
     } 

     public void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
     { 
      switch (e.Action) 
      { 
       case NotifyCollectionChangedAction.Add: 
        foreach (TreeManager item in e.NewItems) 
        { 
         ((System.ComponentModel.INotifyPropertyChanged)item).PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OnPropertyChanged); 

        } 
        break; 
      } 
     } 

     public void OnPropertyChanged(object sender, PropertyChangedEventArgs e) 
     { 

     } 

    } 
} 

をインターフェイスメンバを実装していません。私は観測可能なコレクションを持っています。観測可能なコレクションの各アイテムが変更されたときに通知にアクセスできるようにしたいのですが、何が間違っているのかわかりません。どんなアイデアですか?は、私は次のエラーを取得しています「System.ComponentModel.INotifyPropertyChanged.PropertyChanged」

ありがとうございました。

答えて

2

エラーメッセージはobservableコレクションとは関係ありません。 TreeManagerINotifyPropertyChangedを実装していると宣言しているため、インターフェイスメンバーを実装する必要があります。

documentation on INotifyPropertyChangedによれば、これを実行するには、正確にコンパイラが不満を述べるイベントPropertyChangedを実装する必要があります。

4

あなたは6の時にすべてだと7の

まず、このクラスを使用すると、監視可能なコレクションのイベントをサブスクライブするためにINotifyPropertyChangedのを実装する必要はありません。

また、コレクション内のアイテムが変更されているかどうかを確認するために試している場合は、INotifyPropertyChangedを直接またはfrm ObservableObjectを継承して実装する必要があります。

第2に、あなたが購読する必要があるPropertyChangedのコレクションが変更されました。

関連する問題