gpt4 book ai didi

c# - 我应该如何在 ViewModel 之间进行通信?

转载 作者:太空狗 更新时间:2023-10-29 20:01:20 27 4
gpt4 key购买 nike

我正在使用 MVVM Light 并使用打包的信使系统在 View 模型之间进行通信,但是我遇到了一些难题!基本上,当用户点击客户记录时,相应的 View 就会打开,CustomerViewModel 也会随之实例化。此时,CustomerViewModel 需要来自先前 View 模型 (ViewAllCustomersViewModel) 的选定客户 ID,以便它可以获取 View 绑定(bind)到的选定客户信息(仍在跟踪?) .所以最初我的想法是在消息中将该 ID 从 ViewAllCustomersViewModel(选择要查看的客户)发送到 CustomerViewModel...但是,CustomerViewModel 在加载 View 之前不会实例化以接收消息(此时消息已经广播)!

那么,解决这个问题的最佳方法是什么?到目前为止,我已经考虑了 CustomerViewModel 在实例化后向 ViewAllCustomersViewModel 发送请求(基本上是说“我已准备好接收消息”),然后是 < em>ViewAllCustomersViewModel 将 ID 发送回 CustomerViewModel...但这是解决此问题的必要方法吗?我觉得有点丑!

否则,我在想是否有另一种沟通方式可以解决我遇到的问题?但这难道不是消息系统的全部意义……能够在 View 模型之间进行通信吗?或者我可以强制在启动时实例化 View 模型吗?如果是,那将如何影响 ViewModelLocator

我希望我已经清楚地概述了这个问题,为了解释的目的,我使用了虚构的 View 模型名称......请随时编辑或建议您希望我添加的任何其他信息!

最佳答案

您是否尝试通过您的模型进行交流?直到最后我都无法阅读您的主题,但这就是我在 ViewModel 之间进行交流的方式。两个 View 模型都有 session 实例。

public ViewModel1(ISession session)
{
_session = session;
}

public ViewModel2(ISession session)
{
_session = session;
}

这样,当您在 BDD(行为驱动开发)中测试您的应用程序时,您可以在没有 View 的情况下测试您的应用程序。胶水就是模型。

正如您在这张图片中看到的,您应该能够在没有 View 的情况下测试您的应用程序。 enter image description here

关于c# - 我应该如何在 ViewModel 之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029801/

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