gpt4 book ai didi

MVVM - 决定哪个 ViewModel 负责什么

转载 作者:行者123 更新时间:2023-12-03 10:20:00 26 4
gpt4 key购买 nike

我有一个简单的应用程序,其中包括:

型号

  • 项目
  • 应用于该项目列表的过滤条件

  • 浏览量
  • 欢迎页面
  • 主要项目页面
  • FilterEditPage

  • 我正在使用 MVVM Light 和 Windows Phone 7

    我目前有 3 个 ViewModel,每个 View 一个。过去,我只有一个 ViewModel,这使得我要问的通信非常容易。但是,我想使用 3 个单独的虚拟机,因为这似乎是正确的方法。

    WelcomePage 能够在导航到 MainItemsPage 之前设置筛选条件之一。 MainItemsPage 绑定(bind)到由其 ViewModel 公开的 Items 属性。该 ViewModel 需要根据当前过滤条件过滤该列表。 FilterEditPage 允许用户编辑包含 4 个变量的完整标准集。当条件更改时,需要重新过滤用于 MainItemsPage 的 ViewModel 中的 Items 集合。

    问题是我如何通过应用程序传递过滤器更改。我知道 MVVM 有 Messaging 的概念,MVVM Light 工具包提供了 Messenger 类。但是,我正在努力解决的是发送这些消息的责任在哪里?
  • 3 个 VM 是否在需要使用当前过滤器集时转到模型?
  • 是否所有过滤器更新都通过 FilterEditViewModel 并反过来广播过滤器更改消息?
  • 我是否要针对所有 View 返回到单个 VM?

  • 我看不到 1. 工作,因为需要触发虚拟机返回模型
    我知道我可以得到 3. 现在可以毫无问题地工作。那是错的吗?

    TIA

    帕特龙

    最佳答案

    我会将共享当前过滤器放在模型而不是 View 模型中。您可能在不同页面或同一页面上有很多 View 模型(考虑显示当前选择的面包屑和需要显示过滤器的其他内容)。

    View 模型可以订阅的过滤器的单例模型怎么样?

    关于MVVM - 决定哪个 ViewModel 负责什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563941/

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