我有一个带有动态菜单的窗口和一个DataGrid,它根据单击的菜单项显示不同的记录。 每个菜单项都返回一个自定义类的ObservableCollection。 所有课程都不同,并不一定相互关联。
目前我在ViewModel中创建了一个ObservableCollection(Of Object),每次单击一个菜单项时都会用新结果填充它。 问题是Object没有实现INotifyPropertyChanged,迫使我手动分配ItemsSource。
我确信有办法完成我所追求的目标,但我想不出来。
答案 0 :(得分:1)
您有两种选择:
清除ObservableCollection,然后将新项添加到它。这可能会很慢,因为当你执行它时会触发多个通知(事件),如果它超过几十个项目,那么当你这样做时你会开始注意到一些UI减速
确保您的viewmodel实现INotifyPropertyChanged,并且包含ObservableCollection的属性会触发属性更改通知。然后,当您有要显示的新列表时,只需指定一个新的ObservableCollection。
因为您的集合包含不同类型的对象,所以我相信您已经考虑Data Templating(another example)来构建您的UI - 这样您就可以拥有一个依赖于类型的自定义布局列表项目。