2011-11-17 72 views
2

我学习了几周的WPF MVVM模式。 我还没有清楚的理解这种模式。寻找WPF MVVM框架

我读过这个主题https://stackoverflow.com/questions/275098/what-applications-could-i-study-to-understand-datamodel-view-viewmodel和几乎所有引用的文章。

所有例子的问题是他们有“很多额外的东西”(菜单,几个视图等等)。当你需要学习如何做复杂的事情时很好,但是当你寻找可以开始的东西。

我想有一个应用程序,我可以用它来构建自己的应用程序。即我想看看它只有绝对强制性事情的应用程序,这将是我想:

  • 主窗口
  • Model类
  • ViewModel类
  • View类
  • 一些的ICommand实施? (我需要那样的东西)?
  • 也许我失去了一些东西

回答

1

看看这个video由Jason多林格上MVVM。这是一个小例子,它经历了创建非理想实现的过程,然后如何使用MVVM正确执行它。我发现它在MVVM上开始时非常有用。我认为这个视频足够稳固,我甚至不需要看source,但也可以使用。

+0

我已经看到了这个视频,这是diffenetly很有帮助。但是我寻找一个项目,我可以在VS中打开并作为我的应用程序的骨架 – javapowered

2

的部分问题是,如果你想想看,大部分的这些都不是具体的事情。

如果你只想要“纯粹的需求”,几乎所有你需要的是一些ICommand实现。这是因为下面的只是标准的WPF或C#类:

  • 主窗口 - >只需使用一个窗口
  • Model类 - >这是正常的项目数据。不得改变了MVVM
  • ViewModel类 - >这是实现INotifyPropertyChanged
  • View类只是一个普通的C#类 - >标准WPF用户控件

你有种需要的仅仅是一个ICommand将代表路由到ICommand。这可以从任何MVVM框架(它们都至少有一个,但通常是两个实现,一个用于Action,另一个用于Action<T>,其中参数从CommandParameter路由)。

如果你需要一个简单的命令实现,你可以从我的MVVM Series的代码中窃取一个。它的代码并不是试图成为一个“框架”,因为它的目标只是展示MVVM的基础知识。

+0

好,然后我正在寻找具有所有这些东西预先创建的应用程序。这将是确定有有'字符串getHelloWorld'方法,几类视图和视图模型,就势必视图模型和按钮的视图,命令“showHelloWorld”一键式的典范...... – javapowered

+0

@javapowered将没有合适的“模型“ - 模型应该已经存在,因为它是*您的特定领域逻辑和数据*。其他绑定/安装程序都将只是您每次拆分的东西,因为它们将根据您的数据进行设置。真的,唯一剩下的就是你从做一个标准的WPF应用程序(主窗口)以及添加一个类(VM)和一个UserControl。大多数框架模板都为他们的消息传递服务设置了所有的管道,所以他们会更加精细。 –

+0

@javapowered最接近的事出有可能是在WPF工具包,但你会发现,你最终只是抓取东西展现出来的模板的几乎每一个项目:http://wpf.codeplex.com/wikipage?title=WPF %20Model视图查看模型%20Toolkit&referringTitle =首页 –

0

我写了一个非常基本的MVVM例如here如果你有兴趣。

当我第一次开始学习MVVM我有你也做了同样的问题...我无法找到任何简单的资源来解释MVVM非常基本的。当我试图向其他人解释MVVM设计模式时更加困难,所以这是我为他整理的一个示例应用程序。我认为这是相当简单和直接的,所以贴在网上。

编辑:我通常使用的实际“MVVM框架”看起来更像是this link中的代码。第一个链接是一个非常简单的mvvm应用程序,只有一个页面,但第二个链接以AppViewModel开头,可以处理切换视图。

+0

感谢, 我会查一下。我需要一些非常一般的东西。它应该像VS模板 - “创建MVVM WPF应用程序”,它只会创建强制性的东西,而不是其他任何东西。 – javapowered

+1

@javapowered你也可以下载源代码,它可以用作骨架应用程序。示例中的启动对象是一个'ProductViewModel'和'ProductView',但您可以将它们更改为任何您想要的。它还包括您需要的通用对象,例如'RelayCommand'和'NotificationObject'(实现'INotifyPropertyChanged'的对象)。我实际上建议一旦使用MVVM,就可以进入微软的PRISM库或MVVM Light Toolkit,但是我想保持简单的例子并将第三方库从其中排除。 – Rachel

+1

@javapowered:阅读这篇文章:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx。然后按照雷切尔的建议。进入框架,他们可以帮助你很多,即使你没有使用**全部**。 PRISM是我的最爱。它使得创建模块化,解耦应用变得非常简单。它有一个学习曲线来理解如何设置并使球滚动,但是一旦你了解它,这是惊人的。该指南也很好。它在划分它所涉及的关键领域方面做得很好:模块化,导航,通信,依赖等。 –