Wpf 如何在项目添加到列表时自动更新UI

Wpf 如何在项目添加到列表时自动更新UI,wpf,collections,Wpf,Collections,在我当前的项目中,我必须向列表对象添加数据项。我之所以使用列表,是因为它是从外部类型派生的,也是因为其他应用程序如何使用它,我无法请求将程序集中的类型从列表更改为ObservableCollection。所以到目前为止,我一直在使用列表作为我的存储集合。由于列表不会在添加项目时自动更新UI,我想知道如何调用此更新? 提前感谢您创建一个列表外的并将其绑定到UI元素。创建一个列表外的并将其绑定到UI元素。如果您使用的是ViewModel并实现INotifyPropertyChanged,则很容易抛出

在我当前的项目中,我必须向列表对象添加数据项。我之所以使用列表,是因为它是从外部类型派生的,也是因为其他应用程序如何使用它,我无法请求将程序集中的类型从列表更改为ObservableCollection。所以到目前为止,我一直在使用列表作为我的存储集合。由于列表不会在添加项目时自动更新UI,我想知道如何调用此更新?
提前感谢您

创建一个列表外的并将其绑定到UI元素。

创建一个列表外的并将其绑定到UI元素。

如果您使用的是ViewModel并实现INotifyPropertyChanged,则很容易抛出PropertyChanged事件,将列表属性的名称作为propertyName参数

PropertyChangedEventHandler handler = this.PropertyChanged;

if (handler != null)
{
       var e = new PropertyChangedEventArgs(propertyName);
       handler(this, e);
}

如果您使用的是ViewModel并实现INotifyPropertyChanged,则抛出PropertyChanged事件(将列表属性的名称作为propertyName参数)同样简单

PropertyChangedEventHandler handler = this.PropertyChanged;

if (handler != null)
{
       var e = new PropertyChangedEventArgs(propertyName);
       handler(this, e);
}

请告诉我,这是我在需要订阅UI上的列表事件时使用的方法。请告诉我,这是我在需要订阅UI上的列表事件时使用的方法。当列表内容发生更改时,列表不提供任何通知。除非你有办法得到这些通知,否则你会陷入困境。如果您确实有一种获得通知的方式,例如通过一个单独的事件,那么这可能是可行的,但是了解更多关于您的代码会有所帮助。您使用的是ViewModel吗?它是否实现了INotifyPropertyChanged?没有视图模型,并且正如您所知,list不会调用InotifyProperty或CollectionChanged。我最终选择了创建一个可观察的集合来处理更新。当列表的内容发生更改时,列表不会提供任何通知。除非你有办法得到这些通知,否则你会陷入困境。如果您确实有一种获得通知的方式,例如通过一个单独的事件,那么这可能是可行的,但是了解更多关于您的代码会有所帮助。您使用的是ViewModel吗?它是否实现了INotifyPropertyChanged?没有视图模型,并且正如您所知,list不会调用InotifyProperty或CollectionChanged。我最终选择了创建一个可观察的集合来处理更新。谢谢Andy,这是一个很好的观点。在这个项目中,我仍然在使用模型-视图-演示者模式,并且正在使用MVVM模式。这是一个伟大的提示和前进的参考点。非常感谢。谢谢,安迪,这是一个很好的观点。在这个项目中,我仍然在使用模型-视图-演示者模式,并且正在使用MVVM模式。这是一个伟大的提示和前进的参考点。非常感谢。