您知道任何使用 MVVM 的真实、有用的 WPF/Silverlight 应用程序吗?

Posted

技术标签:

【中文标题】您知道任何使用 MVVM 的真实、有用的 WPF/Silverlight 应用程序吗?【英文标题】:Do you know any real-world, useful WPF/Silverlight applications using MVVM? 【发布时间】:2010-10-17 18:37:21 【问题描述】:

我正在寻找(1) 使用 MVVM 模式(2) 适合 WPF/Silverlight/MVVM 初学者的完整应用程序代码。到目前为止,我只发现:

Crack.NET - 运行时调试和脚本工具(有用但相当复杂) CipherText - WPF 密码管理器(完美但用 VB.NET 编写)

还有哪些?

最好是使用 MVVM 但具有完整感觉的较小的辅助应用程序或工具,可能具有 WPF/Silverlight 图形/动画优点等,它们不仅显示正在使用的 MVVM 概念,而且显示在真实的上下文中-world,完成申请

我的贡献

感谢所有提示,我收集了 15 个以上 MVVM 代码示例的列表并发布在此处:

Overview of WPF/Silverlight code examples that help you learn MVVM.

【问题讨论】:

我认为这个问题的答案的缺乏确实说明了 MVVM 的一些东西......过度炒作,但在可证明的成功方面却很少?附言如果您查看 Blend(MVVM 的鼻祖),您会发现与大多数支持者吹捧的 MVVM 几乎没有什么相似之处... 【参考方案1】:

我也将自己列为 MVVM 的初学者,现在已经开发了大约一个月的大型应用程序。我已经克服了大部分主要障碍,但还是被一些事情搞糊涂了。

小心肯特的建议。它们可以帮助您入门,但 Silverlight 和 WPF 中的细微差别偶尔会让您感到困惑(触发器就是其中之一)。

我不知道任何完整的站点,但我从 Composite Application Guidance 和 PRISM 库开始。这些对于“初学者”和只是 MVVM 来说有点过于繁琐,但其中一些概念非常有用(例如事件聚合器)。

我建议您阅读 Josh Twist、Josh Smith、Shaun Wildermuth 和 Nikhil Kothari 的博客。这些家伙知识渊博。他们也非常乐于回答问题。

您的开发背景是什么?一些围绕方法调用、响应和委托的概念与“传统的顺序”编码技术真正不同。

【讨论】:

感谢名字提示,我的背景主要是无状态网络编程,从未做过例如C++ 或 winforms,所以整个有状态/委托/事件模型 + .NET 3.5 + XAML/Binding/Commands/Routing/triggers/etc + MVP/MVVM 模式都是新概念,尽管他们决心通过它们,真正的应用程序有所帮​​助跨度> 我也来自 ASP.NET 后台,发现异步编程模型最难掌握。一开始,必须提出和订阅事件似乎需要大量额外的代码,但一两个月后它就变得非常有意义,并且有助于很好地隔离组件。更新现在很简单。【参考方案2】:

鉴于这个问题,您可能会对当前为 M-V-VM 创建“Pet Shop”类型参考实现所做的工作感兴趣。您可以加入对话或关注进度here。

【讨论】:

【参考方案3】:

在过去的几个月里,我一直在一个项目中使用 MVVM,这真是太棒了。我从事 UI 工作已经超过 12 年了,这是我遇到的最好的事情。

【讨论】:

我同意。 MVVM 确实是一种智能模式,并且让代码更新变得如此简单。 我正在处理的大部分长达一小时的 MVVM 示例我可以在大约 5 分钟内不使用 MVVM 并使用简单的代码完成,例如这个 prism 示例,20 多个类只是为了获取主/详细信息工作,福利什么时候开始生效? tanguay.info/web/index.php?pg=codeExamples&id=105 你可能看不到为 MVVM 做一个小时长的例子的好处。当然,您可以更快地完成一个快速演示——但这不是这个模式的意义所在。在 UI 与业务逻辑分离的大型项目中使用时,好处就显现出来了。【参考方案4】:

我已经使用 MVVM 大约 2 年了,我可以说这是一个巨大的成功。我已经在 Silverlight 中使用 MVVM 发布了一个大型医学成像解决方案。我还将广泛使用 Prism 和 MVVM 发布一个复杂的 WPF 应用程序。事实上,在这个更新的应用程序中,如果没有 MVVM,我不知道如何优雅地解决一些问题。

+1 在 MVVM 上。有用。它是可测试的。它是可扩展的。它促进了开发人员-设计人员的工作流程。它也不必是杂乱无章和沉重的管道。

此外,我为 1 月份的 CodeMash 会议使用 MVVM 创建了一个中型 Silverlight 应用程序。您可以查看并获取source code here。

【讨论】:

【参考方案5】:

试试this one。另外,Family.Show 可能有用。

【讨论】:

Family.Show 是在 WPF 还是 Avalon 的时候开始的,我们没有使用 MVVM 模式。【参考方案6】:

WPF Disciples group 决定创建一个真实的 MVVM + Mediator 参考应用程序,类似于 Web 应用程序的 Pet Shop 参考应用程序。你可以关注codeplex的开发here

【讨论】:

以上是关于您知道任何使用 MVVM 的真实、有用的 WPF/Silverlight 应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

WPF MVVM阻止Expander控件崩溃

WPF datagrid 选择行点击事件?

WPF中MVVM的项目结构

WPF(MVVM):从 Viewmodel 关闭视图?

WPF MVVM

WPF MVVM 架构 Step By Step(把后台代码移到一个类中)