gpt4 book ai didi

c# - 跨 ViewModel 发布更新?

转载 作者:行者123 更新时间:2023-12-03 10:49:47 24 4
gpt4 key购买 nike

这是我的 WPF 应用程序模型的简化版本:

Employee
+Name:string

Client
+Name:string
+PhoneNumber:string

Appointment
+Employee:Employee
+Client:Client
+DateAndTime:DateTime

我的应用程序有几个用 TabControl 组织的主要页面。每个 TabItem 都有一个关联的 View 和 ViewModel。在一个页面上,有一个 DataGrid 显示所有约会以及一些特定的详细信息,例如客户的电话号码。一页一页,有另一个 DataGrid 显示所有客户端。这些 DataGrid 绑定(bind)到不同的 ViewModel,因为它们位于不同的页面上。我的 ViewModel 仅作为实现 INotifyPropertyChange 的模型的包装器来实现。

还有一个问题:如果用户在第二个页面上修改了客户的电话号码,该页面的 ViewModel 会正确更新(以及通过它更新的模型),但不会通知第一页的 ViewModel 发生了更改。当我返回第一页时,屏幕上与该客户端的任何约会仍会显示旧电话号码,直到我执行会导致该 ViewModel 更新的操作。

我应该如何解决这个问题?页面之间应该共享一个通用的 ViewModel 吗?当进行更改时,模型是否应该以某种方式通知所有 View 模型(模型目前对 View 模型一无所知)?这是我的第一个 MVVM 项目,所以我不确定应该怎么做。

为了让事情变得更复杂,在我的第一页上,我使用了一个日历控件并使用它的 SelectedDate 属性来确定要显示哪些约会。因此,该页面的 ViewModel 必须保留自己的缓存约会列表,每当 SelectedDate 更改或添加或删除约会时,它都会更新这些约会列表。

感谢您对此的任何帮助。

最佳答案

您可能想要进行某种消息传递、通知和监听器等。有很多方法可以做到这一点,请查看 MVVM Light ,它有一个内置的方法,这篇文章有一个使用它的例子......

http://blog.galasoft.ch/archive/2009/10/18/clean-shutdown-in-silverlight-and-wpf-applications.aspx

关于c# - 跨 ViewModel 发布更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com