在 Windows Presentation Foundation 中使用 MVC 而不是 MVVM

Posted

技术标签:

【中文标题】在 Windows Presentation Foundation 中使用 MVC 而不是 MVVM【英文标题】:Use MVC instead of MVVM in Windows Presentation Foundation 【发布时间】:2016-03-08 02:10:45 【问题描述】:

我最近开始学习 Windows 生态系统(C#、.NET、WPF 和 XAML),正如预期的那样,这是一个完全不同的世界。我想从一开始就开始做的一件事是按照 MVVM 模式创建我的应用程序,因为它似乎是 WPF 应用程序的标准;我一直在为初学者寻找好的教程,到目前为止,我还没有找到一个逐步展示如何实现 MVVM 的教程。

我做了一点 ios 编程,所以我习惯了 MVC 模式,我想知道为 WPF 应用程序遵循相同的设计模式是否有意义。

这就是我想按照MVC 模式构建我的代码的方式。

Model - Data Classes
View  - MainWindow.xaml
Controller - MainWindow.xaml.cs 

你们觉得上面的文件结构有什么问题吗?

使用MVVM 的主要好处是什么?我对数据绑定有点困惑,这似乎与WPF 中的MVVM 模式非常紧密。

谢谢

【问题讨论】:

What is the difference between MVC and MVVM?的可能重复 Mainwindow.xaml 和 MainWindow.xaml.cs 是同一个类,所以你真的有一个模型和一个视图。这就是 MFC 中的 Document/DocumentView。坚持使用 MVVM。你管 MVVM 教程。 【参考方案1】:

我会使用 MainView.cs 作为调用 MainWindow.xaml.cs 中的方法的视图,也使用 MainController.cs 并使用 MainWindow.xaml.cs 调用 MainController.cs 类中的方法。当您使用 IController 和 IView (Interfaces) 从 View 和 Controller 中拆分 MainWindow 时,您可以更轻松地移植它。所以:

MainWindow.xaml 只是布局文件。

接口:

IView 控制器

类:

MainWindow.xaml.cs 使用 IView MainController.cs 使用 IController MainView.cs 使用 IView 模型.cs

用法: 如果例如单击按钮 MainWindow.xaml.cs 从 MainController 调用方法。 如果你想更新例如您调用 MainView 的文本视图正在调用 MainWindow.xaml.cs。 如果你然后端口到例如android 你必须创建一个使用 IView 的新类,而不是调用 MainWindow.xaml.cs 来更新文本视图。您还可以使用这个新类来调用 MainController 中的方法。

编辑:

IController 只是在我的特殊情况下需要,因为通过 tcp Connection 我使用另一个 Controller 类,所以您可能只需要使用一些 iview 接口。

【讨论】:

非常感谢您的建议。

以上是关于在 Windows Presentation Foundation 中使用 MVC 而不是 MVVM的主要内容,如果未能解决你的问题,请参考以下文章

Windows Presentation Foundation (WPF) 项目不支持应用程序

Windows Presentation Foundation (WPF) 项目不支持网格

windows presentation foundation (wpf) 不支持 UserControl/Grid...

Windows Presentation Foundation (WPF) 项目中不支持xxx的解决

我的 C# .NET 团队是不是应该迁移到 Windows Presentation Foundation? [关闭]

来自程序集的类型是使用旧版本的 blend sdk 构建的,并且在 Windows Presentation Foundation 4 项目中不受支持