C# 可观测集合问题

C# 可观测集合问题,c#,.net,inotifypropertychanged,C#,.net,Inotifypropertychanged,我有一个类似下面给出的类/结构 公共类文件详细信息 { 公共文件详细信息() { } public PrintFile PrintFileDetails { get; set; } public Boolean IsSelected { get; set; } public DateTime UploadTime { get; set; } public long FileSize { get; set; } public UploadTypes Type

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

公共类文件详细信息 { 公共文件详细信息() { }

    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中定义的。我计划在一个
observedconnection
中部署这个结构。如果我实现
NotifypropertychangedFileDetails
的话,
PrintFileDetails
下的项目是否也能从
inotifPropertyChanged
中获益。我相信我不会t实现其他程序员共享的
INotifyPropertyChanged

否,每个对象必须实现INotifyPropertyChanged本身。PrintFile对象不能从FileDetails对象实现接口这一事实中获益

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

脚注:将实现INotifyPropertyChanged的对象放入ObservableCollection不会产生任何神奇的效果。对集合中的对象所做的更改不会触发集合的PropertyChanged事件(除非您编写代码这样做)。仅当集合对象的属性更改时,才会激发集合的PropertyChanged事件


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

否,每个对象都必须实现INotifyPropertyChanged自身。PrintFile对象不能从FileDetails对象实现接口这一事实中获益

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

脚注:将实现INotifyPropertyChanged的对象放入ObservableCollection不会产生任何神奇的效果。对集合中的对象所做的更改不会触发集合的PropertyChanged事件(除非您编写代码这样做)。仅当集合对象的属性更改时,才会激发集合的PropertyChanged事件


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

谢谢,如果我使用/enableDataBinding,它会为xsd中的所有项生成INotifyPropertyChanged吗?是否可以为xsd中的特定项生成INotifyPropertyChanged?xsd支持指定使用/e开关时要发出类类型的元素。我假设您可以运行XSD两次,一次用于您不希望属性更改通知的类,一次用于您确实希望属性更改通知的类,然后将源文件拼接在一起。这是一项大量的手工工作,每次从XSD生成时都必须重复。只需生成属性notif就会简单得多谢谢,如果我使用/enableDataBinding,它会为xsd中的所有项生成INotifyPropertyChanged吗?是否可以为xsd中的特定项生成INotifyPropertyChanged?xsd支持指定使用/e开关要发出类类型的元素。我想您可以为类运行xsd两次,一次您不希望属性更改通知的类,以及确实希望属性更改通知的类一次,然后将源文件拼接在一起。这是一项大量的手工工作,每次从XSD生成时都必须重复。只需在所有内容上生成属性通知就会简单得多。