可观察的收集问题

log*_*eks 1 .net c# inotifypropertychanged

我有一个像下面给出的类/结构

public class FileDetails {public 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;}

}
Run Code Online (Sandbox Code Playgroud)

在上面的片段PrintFile中定义了XSD.我打算在一个内部部署这个结构ObservableConnection.如果我实施NotifypropertychangedFileDetails将下面的项目PrintFileDetails也能够获益INotifypropertychanged.我相信我无法实现,INotifyPropertyChanged因为它与其他程序员共享.

dth*_*rpe 5

不,每个对象必须实现INotifyPropertyChanged本身.PrintFile对象不受益于FileDetails对象实现接口的事实.

此外,如果要从XSD生成这些类,则可以使用XSD.EXE上的/ enableDataBinding命令行开关告诉生成器使用INotifyPropertyChanged实现自动生成类.

脚注:将实现INotifyPropertyChanged的对象放入ObservableCollection中将不会产生任何神奇的效果.对集合中的对象所做的更改不会触发集合的PropertyChanged事件(除非您编写代码来执行此操作).只有在集合对象的属性发生更改时,才会触发集合的PropertyChanged事件.

在大多数情况下,您正在使用可观察集合,因为您希望将数据绑定到WPF或Silverlight UI元素,并且您希望UI在数据更改时自动更新.数据绑定系统将注意集合中的对象是否实现IPropertyNotifyChanged并自动附加到PropertyChanged事件,以便UI知道数据何时更改.