【问题标题】:Build my own mvvm project from scratch?从头开始构建我自己的 mvvm 项目?
【发布时间】:2012-12-28 04:29:54
【问题描述】:

我对 MVVM 的调查不到一个月。我还尝试了一个 Mvvm 框架(来自 Laurent Bugnion 的 Mvvmlight。太棒了)。

但我正在考虑自己做所有这些事情,这意味着我想从头开始构建我的项目遵循 mvvm 理念(不要使用任何可用的 mvvm 框架)。 我想让它尽可能简单,但仍然有足够的功能并严格遵循 mvvm 理念。这就是为什么我需要你的建议来帮助我认识到我需要什么、我面临什么以及需要多长时间?

在几乎 Mvvm 框架中,我发现它们支持以下内容:

  • 构建 ViewModelBase:应该为 INotifyPropertyChanged、INotifyPropertyChanging 实现 -> 支持绑定属性
  • RelayCommand(在 Prism 中是 DelegateCommand):为 ICommand 实现
  • 信使类

做一个Mvvm项目就够了吗?

我知道 Mvvm 是一个模型,所以有多种实现方式。但是像我这样的新手。很难知道我应该从哪里开始。 对于一个长篇大论但不清楚的问题,我很抱歉。只是我试着展示一下我现在的情况,请教大家。

感谢您的阅读,新年快乐!!!

【问题讨论】:

  • 这个Messenger类的职责是什么?
  • @ryadavilli 促进视图模型之间的通信
  • 关于 mvvm 中的 Messenger,我认为这对于视图和视图模型之间的相互通信非常有用,并确保在 ViewModel 中不使用视图的组件。但是,有没有人知道一个开始开发 Messenger 类的好例子?
  • 你,ViewModelLocator,ServiceAgent 也有...

标签: c# wpf mvvm mvvm-light


【解决方案1】:

对于简单的 MVVM 项目,以下就足够了
1. RelayCommand : 用于自定义命令
2. Messenger(或 EventAggregator 或 MessageBus):用于视图模型之间的通信
3. ViewModelBase :ViewModel 的基类。也可以用作模型的基类(但对于那个单独的基类)

对于较大的应用程序,还需要布局支持。这是由 Prism Regions 概念提供的。

除此之外你很高兴。

不过,我建议使用现有的 MVVM 框架。查看this 了解常用的 MVVM 框架。它们是久经考验的框架(并且是免费的)。构建SOLID 框架需要大量的测试工作。

我不会说构建一个框架是很大的努力,但不管它是什么,它都是完全没有必要的(直到商业/工作环境非常严格并且不允许这样做)。

【讨论】:

  • 塔克提拉克!我已经阅读了该讨论(我应该使用什么 MVVM 框架?)。这很有趣,当然每个人都有优点和缺点。但是,在这里,我想从头开始构建它。原因是我想让它尽可能简单,但仍然有 mvvm 理念。
  • 我用过 MVVMLight,它很酷。您可以从头开始构建,但这不是必需的
【解决方案2】:

我认为在不使用任何外部 MVVM 框架的情况下自己实现 MVVM 设计模式很重要(至少是第一次)。它将迫使您看到并理解“水下石头”以及解决问题的不同方法和解决方案。

【讨论】:

  • 我同意你的看法。我确实尝试过使用 Mvvmlight。它真的很酷也很有用,因为我可以快速加入和理解 mvvm 模型(带有项目模板、项目模板)和所有预定义的功能(messenger、viewmodelbase),它让一切变得更容易上手。但正如你所说,自己做会迫使我们更深入,特别是我不想在我的应用程序上依赖任何第三方框架。
猜你喜欢
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多