WPF MVVM DataGrid ItemsSource绑定到不同的集合

时间:2018-02-06 11:51:10

标签: wpf vb.net mvvm datagrid

我有一个带有动态菜单的窗口和一个DataGrid,它根据单击的菜单项显示不同的记录。 每个菜单项都返回一个自定义类的ObservableCollection。 所有课程都不同,并不一定相互关联。

目前我在ViewModel中创建了一个ObservableCollection(Of Object),每次单击一个菜单项时都会用新结果填充它。 问题是Object没有实现INotifyPropertyChanged,迫使我手动分配ItemsSource。

我确信有办法完成我所追求的目标,但我想不出来。

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 清除ObservableCollection,然后将新项添加到它。这可能会很慢,因为当你执行它时会触发多个通知(事件),如果它超过几十个项目,那么当你这样做时你会开始注意到一些UI减速

  • 确保您的viewmodel实现INotifyPropertyChanged,并且包含ObservableCollection的属性会触发属性更改通知。然后,当您有要显示的新列表时,只需指定一个新的ObservableCollection。

因为您的集合包含不同类型的对象,所以我相信您已经考虑Data Templatinganother example)来构建您的UI - 这样您就可以拥有一个依赖于类型的自定义布局列表项目。