gpt4 book ai didi

wpf - 在MVVM View 模型中哪里处理逻辑?

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

在初步了解WPF和MVVM之后,我目前正在为数字IO Controller 开发小型调试应用程序。在此应用程序中,我有一个 View 模型树,如下所示:

IOControllerViewModel> ConfigurationViewModels> PortViewModels> ChannelViewModels

这对应于业务对象,其中IOController包含一组配置,然后包含一个配置列表,然后包含一个端口列表,该列表随后包含一个 channel 列表,这些 channel 最终代表了IO Controller 的输入/输出 channel 。

但是现在我的问题是在哪里处理“逻辑”?

例如,我想切换输出 channel 的状态。 IOControllerViewModel当前是唯一的实例,该实例具有对业务对象的引用,该实例包含所需的ToggleChannel()方法。现在我看到三个选项:

  • 将登录名放入ChannelViewModel中。因此通过
    必要的业务对象从我的根源一直到叶子。
  • 将逻辑放入IOControllerViewModel中。因此,一个事件或
    类似的东西必须由ChannelViewModel触发,然后
    由IOControllerViewModel处理。
  • 介绍一个 Controller ,该 Controller 负责任何逻辑和
    将 Controller 发布到所有 View 模型。
  • 还有其他选择吗?最佳实践?

  • 非常感谢!

    最佳答案

    通常,我将逻辑放在使用它的层上,并使用消息传递系统(例如PRISM的EventAggregator或MVVM Light的Messenger)在ViewModel之间进行通信。 (如果您有兴趣,我就此here撰写了一篇简短的文章)

    在您的情况下,这取决于处理登录的层。例如,如果LoginViewModel成功验证了用户身份,它将广播包含相关参数的类似UserAuthenticated消息的消息。然后,感兴趣的ViewModel可以订阅UserAuthenticated消息,并进行相应的处理。

    请记住,使用MVVM,您的ViewModels是您的应用程序。该应用程序应该运行得很好,根本没有任何 View (例如来自测试脚本)

    关于wpf - 在MVVM View 模型中哪里处理逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271777/

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