无论用户做什么,我都想自动更新应用程序部分内容中显示的数据。
数据来自返回多行的查询,我使用查询数据循环并填充List<T>
个自定义对象。
然后将View绑定到ViewModel中的某个属性,该属性在某种程度上与该列表相关,例如:
public int numFabricacionesEnCurso { get { return maquina.fabricacionesEnCurso.Where(fb => fb.idEstado == 1).Count(); } }
将maquina.fabricacionesEnCurso
作为我上面提到的静态列表。
基本上我有两个问题:
自动更新的最佳方法是什么?创建另一个线程,后台工作者......?我应该在哪里创建它们,以便它不会绑定到某个特定的屏幕?
如何将更改推送到视图?我不能通过模型调用VM属性的RaisePropertyChanged,因为它不知道VM。我应该将该列表作为属性并在模型本身中实现INotifyPropertyChanged吗?
答案 0 :(得分:1)
要做的事情就是让两个线程运行。 一个是主UI线程。 第二个是数据库线程。
数据库线程将定期轮询数据库。 如果模型被更改并且将触发EVENT,则更新模型。
viewmodel将订阅模型的EVENT。
当触发事件时,将更新视图模型,从而更新视图。
不要忘记在窗口关闭时取消订阅以避免内存泄漏。
其他方法是使用中介模式。这更安全。