我有一个类似下面给出的类/结构
公共类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
,因为它是其他程序员共享的。
此外,如果您从XSD生成这些类,您可以告诉生成器使用XSD.EXE上的/enableDataBinding命令行开关自动生成具有INotifyPropertyChanged实现的类。
脚注:将实现INotifyPropertyChanged的对象放入ObservableCollection不会有任何神奇的效果。对集合中的对象所做的更改不会激发集合的PropertyChanged事件(除非编写了相应的代码)。只有当集合对象的属性发生更改时,才会触发集合的PropertyChanged事件。
在大多数情况下,您使用可观察集合是因为您希望将其数据绑定到WPF或Silverlight UI元素,并且希望UI在数据更改时自动更新自身。数据绑定系统将注意到集合中的对象是否实现了IPropertyNotifyChanged,并将自动附加到PropertyChanged事件,以便UI知道数据何时更改。