代码之家  ›  专栏  ›  技术社区  ›  moswald Jarod42

MVVM和登录窗口

  •  2
  • moswald Jarod42  · 技术社区  · 15 年前

    在MVVM世界中,做这件事的首选方法是什么?为什么?

    我看到了很多选择,其中之一就是继续像以前那样做,因为这是一次性的步骤,不会干扰应用程序的其他“MVVM特性”。一旦用户登录,我就可以初始化 MainWindow 的ModelView,然后继续我的工作。另一个选择是让ModelView显示登录对话框(以某种方式)。MVVM专家更喜欢这两个吗?

    (还有一个选项,它首先显示登录对话框,然后在关闭对话框时,创建主窗口。这在技术上解决了我的困境,但它并没有真正教育我,我也不喜欢“裸体”登录对话框的美感。)

    2 回复  |  直到 15 年前
        1
  •  2
  •   jbe    15 年前

    Model-View-ViewModel模式没有告诉我们如何定义UI工作流。我们可以自行选择合适的工作流程。我更喜欢你的第一种方法,因为它是简单和直接的实施。工作流:

    1. 显示空的主窗口
    2. 使用用户凭据初始化主窗口

    将由 控制器 (例如应用程序控制器)。图中显示了这可能是什么样子 应用程序示例 WPF Application Framework (WAF)

        2
  •  0
  •   Stefan Szasz    15 年前

    我认为最好的(更干净,可测试的…)选项是ViewModels启动对话框显示,因为逻辑应该属于VM而不是视图…这个“显示”通常是通过创建一个类似DialogService的东西来实现的,它应该处理这个问题- 为您的对话框实现的模式窗口创建一个抽象(例如,通过创建一个接口,该接口具有一个类似ShowDialog()的方法和一个属性DialogResult,或者更多——这取决于您的具体需要);然后创建一个DialogService,该服务依赖于您的对话框抽象,并且您可以在该服务中调用它ShowDialog,检查DialogResult的值等;在你的虚拟机中,你只会使用这个对话框服务,而不会参考一些与视图相关的东西……我不会详细介绍,因为有一些实现是基于这个(以及更多)来显示/使用虚拟机中的模态对话框的……选择这种方法还可以让你获得UI框架平台独立性。