如何使用ObservableCollection从ViewModel刷新UI?

use*_*434 14 c# wpf mvvm

我有一个列表框,其中的项目绑定到ObservableCollection.

现在,从viewModel中,我需要更新UI.我没有从我的视图模型中引用列表框.

如果我从我的ObservableCollection中删除或添加一个项目,ui会更新.

基于一些其他逻辑,我需要更新UI ...但ObservableCollection是相同的.

如何在不添加或删除ObservableCollection中的项目的情况下更新UI?

谢谢

Mic*_*eld 18

如果您需要更改用户界面,因为你编辑的项目您的收藏,那么你应该安排这些项目实现INotifyPropertyChanged接口.如果集合中的对象具有PropertyChanged事件,则UI将从单个项目中侦听该事件.(如果可能的话,你也可以改变你的项目集合中是DependencyObjectsDependencyProperties,其实现同样的目标.)

如果您真的需要在没有关于集合的任何内容更改时触发UI更新,那么执行此操作的方法是手动引发CollectionChanged事件.这不能用ObservableCollection<>as 来完成,但你可以从该类派生一个新的集合,并protected OnCollectionChanged从一些新的方法中调用该public方法.


Noc*_*tis 15

我有一个类似的问题,我想改变一个项目的背景,但显然项目和集合都没有改变.

这是通过致电:

CollectionViewSource.GetDefaultView(your_collection_name).Refresh();
Run Code Online (Sandbox Code Playgroud)

这会从视图模型刷新视图而不更改集合