mvvm - 模态是MVVM中的反模式吗?

标签 mvvm modal-dialog anti-patterns

有一个interesting post讨论 View 模型之间的通信模式。

我最近努力在WPF MVVM应用程序中实现模式对话框,但是我对此思考的越多,我看到的原因也变得越来越困难,并且为什么没有内置的辅助工具来实现此目的。针对不同平台仅能增强此 View :看起来适合显示所选项目详细信息的模式对话框的内容通常是通过导航到移动设备上的不同 View 来实现的。

因此,我向那些成功实现MVVM模式并避免了代码隐藏的人提出了问题:您是否还避免了模式对话框?您觉得合适的替代品是什么?我至少可以想到两个:

  • 将子(模态) View 置于新 View 中,并使用pub/sub实现父模型和子模型之间的通信;
  • 将带有子控件的面板直接添加到父 View ,只需旋转其可见性即可将 subview 激活为模拟模态的弹出窗口。

  • 第二种方法肯定受到更多限制,当父 View 可以生成各种 subview 时,它实际上不起作用,但是当父 View 需要显示一个小的单个弹出窗口时,它似乎很合适。还是最好采用第一种方法,使其更为通用。还有其他选择吗?

    最佳答案

    thats我在mvvm中执行对话框的方式。

    调用对话框窗口的ViewModel:

     var result = this.uiDialogService.ShowDialog("Dialogwindow title goes here", dialogwindowVM);
    
     ... do anything with the dialog result...
    

    关于mvvm - 模态是MVVM中的反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16188845/

    相关文章:

    javascript - Bootstrap 完成一个函数后,如何在 jQuery 中运行一个函数?

    Java反模式名称?包含对象的对象包含...等等

    c# - 让方法对 DLL 中的 PropertyChanged 使用react

    c# - 将 IsMouseOver 绑定(bind)到 UserControl 中的 ViewModel

    javascript - 调用 .modal ('hide' 后,Modal 不会消失)

    css - 使用 Struts2 和 bootstrap 以模态方式打开图像

    google-analytics - 是否存在协议(protocol)相关 URL 优于 HTTPS 的情况?

    php - 设计模式——反模式调用超——避免或保留

    mvvm - 如何根据语言变化制作应用

    c# - 当 ItemTemplate 是用户控件时,如何从 ListView 中正确删除项目?