gpt4 book ai didi

wpf - MVVM - 分离 View 之间的通信

转载 作者:行者123 更新时间:2023-12-04 12:13:07 27 4
gpt4 key购买 nike

我试图弄清楚如何执行以下操作:

我有一个 CustomerListViewModel包含 ObservableCollection<Customer>MainView拥有这些 View 的一个实例:

  • CustomerListView - 创建 CustomerListViewModel 的实例
  • SearchView - 创建 SearchViewModel 的实例

  • 我的问题是,如何将 CustomerListView 和 SearchView 分开。
    只有在选择了客户时才应显示 SearchView。 SearchViewModel 的唯一依赖项应该是 Customer模型。如果没有从 CustomerListViewModel 中选择 Customer,则不应显示 SearchView。

    我应该引入一个包含 CustomerListViewModel 的新 View / View 模型吗?和 SearchViewModel可以保存对 Selected Customer 的引用并切换 SearchView 的显示?如果没有,我该怎么办?

    我知道这个问题很广泛,但我会很感激任何建议。

    最佳答案

    不要让 MainView 包含 CustomerListView 和 SearchView 的实例。这三个应该是分开的。

    就 View 之间的通信而言,这应该通过各自的 View 模型使用例如 mvvm-light messenger 来完成。如果您为每个 View 注册不同的信使,那么您可以从 View 模型向您想要的任何 View 发送消息。

    只是使用 MVVMLight Messenger 的简单示例:-

    看法:

    Messenger.Default.Register<NotificationMessage>(this, OpenViewMessageReceived);

    private void OpenViewMessageReceived(NotificationMessage msg)
    {
    //Logic
    }

    View 模型:
    Messenger.Default.Send(new NotificationMessage(someStr));

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

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