2011-06-23 4 views
1

IはのObservableCollection質問

パブリッククラスFileDetails { パブリックFileDetails()上記のスニペットにおいて { }

public PrintFile PrintFileDetails { get; set; } 
    public Boolean IsSelected { get; set; } 
    public DateTime UploadTime { get; set; } 
    public long FileSize { get; set; } 
    public UploadTypes TypeOfUpload { get; set; } 
    public DateTime DownloadStartTime {get;set;} 
    public DateTime DownloadEndTime {get;set;} 
    public bool ShouldDownload{get;set;} 

} 

以下に示すようなクラス/構造を有するPrintFile XSDで定義されています。私はこの構造をObservableConnectionの内部に展開する予定です。私がNotifypropertychangedFileDetailsを実装する場合、PrintFileDetailsの下の項目はまた、INotifypropertychangedの利益を得ることができます。私はINotifyPropertyChangedを実装することができないと信じています。

答えて

5

いいえ、各オブジェクトはINotifyPropertyChanged自体を実装する必要があります。 PrintFileオブジェクトは、FileDetailsオブジェクトがインタフェースを実装しているという利点がありません。

また、XSDからこれらのクラスを生成する場合は、XSD.EXEの/ enableDataBindingコマンドラインスイッチを使用して、INotifyPropertyChanged実装でクラスを自動的に生成するようにジェネレータに指示できます。

脚注:INotifyPropertyChangedを実装するオブジェクトをObservableCollectionに配置すると、魔法の効果はありません。コレクション内のオブジェクトに対する変更は、コレクションのPropertyChangedイベントを発生させません(コードを記述しない限り)。コレクションのPropertyChangedイベントは、コレクションオブジェクトのプロパティが変更された場合にのみ発生します。

ほとんどの場合、WPFまたはSilverlight UI要素にデータをバインドし、データが変更されたときにUIが自動的に更新されるようにするため、オブザーバブルコレクションを使用しています。データバインディングシステムは、コレクション内のオブジェクトがIPropertyNotifyChangedを実装しているかどうかを確認し、PropertyChangedイベントに自動的にアタッチして、UIがデータの変更時を知るようにします。

+0

私が/ enableDataBindingを使用すると、xsd内のすべてのアイテムに対してINotifyPropertyChangedが生成されますか? XSDの特定の項目に対してINotifyPropertyChangedを生成することは可能ですか? – logeeks

+1

XSDでは、/ eスイッチを使用するためのクラスタイプを生成する要素を指定できます。私は、XSDを2度実行することができます.1回はプロパティの変更通知を必要としないクラスに対して、もう1度はプロパティの変更通知をしたい場合は、ソースファイルを一緒にスプライスします。これは、XSDから生成するたびに繰り返される手作業の多くです。すべてのプロパティ通知を生成するほうがはるかに簡単です。 – dthorpe