在 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 项目中不受支持