gpt4 book ai didi

wpf - MVVM:通信

转载 作者:行者123 更新时间:2023-12-04 16:14:42 31 4
gpt4 key购买 nike

我正在开发一个大型 MVVM 应用程序。我为此使用了 MVVM 轻量级工具包。该应用程序就像一个带有后退和前进按钮的网络浏览器。主视图是一个用户控件。我在主视图用户控件中放置了后退和前进按钮。主视图又具有用户控件。单击后退和前进按钮时,用户控件会发生变化。主 ViewModel 跟踪当前用户控件并根据按钮单击加载下一个。

所有这些用户控件的加载取决于第一步所做的选择(ID)。可以说,主视图是一个搜索屏幕,我们选择一个客户。下一个屏幕将是地址、帐单、请求等。这些屏幕不共享任何数据。但数据是针对同一客户的。

那么,在主视图中存储客户 ID 是一种好习惯吗?如果我这样做,我应该将一个 UserControl_Loaded 事件绑定(bind)到一个命令,然后我会在其中请求地址和帐单信息。

或者我可以将按钮(后退和前进按钮)移动到每个用户控件而不是主视图,将客户 ID 与将加载下一个 View 的消息一起传递。

哪个更好?

最佳答案

我过去做过这种事情的一种方法是实现一个封装操作数据上下文的类。所有页面都将填充(和更新)此类的属性。主视图模型创建此类的一个实例和页面 View 模型的集合,为每个模型提供数据上下文。它还处理从页面到页面的导航,实现 CurrentPage , NavigateForwardCommand , 和 NavigateBackwardCommand特性。

如果用户返回到第 1 页并更改了客户 ID,则数据上下文将重新填充适合新客户的信息。由于所有页面都在查看相同的数据上下文对象,因此所有后续页面都将显示正确的信息。

您需要在数据上下文对象中实现属性更改通知,并处理 PropertyChanged在页面中。当CustomerID在数据上下文对象的属性发生变化时,页面 View 模型将需要刷新出现在它们各自 View 中的属性。

关于wpf - MVVM:通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7052077/

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