将WPF应用程序转换为MVVM时必须知道的事项的一般清单

时间:2009-07-03 18:38:22

标签: c# wpf mvvm

我正在使用vanilla WPF应用程序并将其转换为使用MVVM模式。在我评估代码期间,我编制了一个在转换应用程序之前需要了解的主题列表。我的列表看起来有点像这样:

  • 动态加载xaml(虽然这是我的应用程序特有的)
  • 绑定xaml以查看模型命令(按钮,工具栏,菜单项)
  • 热键
  • 将视图模型命令绑定到事件(窗口大小更改,鼠标事件等)
  • 处理对话框(消息框,文件对话框,用户设计的对话框等)

我已经为每个项目提供了各种解决方案,因此我不会询问如何执行这些操作。我的实际问题是:我错过了什么吗?还有什么我需要知道的?

另一种看待它的方法是,如果我正在制作WPF WVVM工具包。它需要什么样的特性和功能才能让开发人员创建MVVM应用程序?

谢谢!

3 个答案:

答案 0 :(得分:2)

我认为你有基本的MVVM问题。您可能仍需要的是“当我的应用程序对于MVVM来说过于复杂时我该怎么办?”这种情况发生得相当快 - 超过几个视图,并且您得到了一个视图模型爆炸,或者您获得了单片视图模型,这些模型变得繁琐且难以维护。

我建议将Composite WPF(Prism)框架作为该问题的一种解决方案。 Prism是一种架构框架,它简化了将应用程序划分为彼此或多或少相互独立的模块的过程。每个模块可以有一个或两个视图(一个可能是最常见的),每个视图可以有自己的视图模型。它以非常松散耦合的方式组织模块之间的通信工作做得很好。这些模块加载到Shell窗口中,可以根据需要进行配置。

希望有所帮助!

答案 1 :(得分:0)

您可能还想为某些常用功能设置基础架构,例如复制/粘贴搜索按钮等。

答案 2 :(得分:0)

切换到MVVM时遇到的第一个问题是将事件/路由事件绑定到VM中的处理程序。没有内置或默认的方法。我确实有一个帮助器来实现它,但它可能需要考虑一个问题,因为后面的代码中的事件处理也会破坏MVVM模式。