【发布时间】:2009-06-15 18:41:37
【问题描述】:
我叫 Jesús,来自西班牙,我是一名 .NET 开发人员,几天前我刚刚发现了这个很棒的网站。
我有一些关于 MVVM 模式的问题,如果你能回答我会很高兴。
三个月前我开始使用 WPF,我已经学会了 MVP 模式。
MVP 非常好,因为您可以很好地构建应用程序。
我开始在各处看到 MVVM,但每个人都在按照自己的方法使用该模式。
每个博主都在他们的 WPF 博客中谈论 MVVM,但每个实现都是不同的。
我现在专注于在 CodePlex 上使用 MVVM 工具包的实现,但我有问题,找不到太多信息。
我认为 MVVM 是 MVP 的一种变体。
有了 MVP,每个视图都有一个演示者来完成视图的工作。
在 MVVM 中也是一样的,只是尽可能使用命令。
我还看到,如果你需要一个活动,就像 MVP 一样;将事件委托给演示者/视图模型,也就是说,如果它不是视图的工作(例如更新 UI)。
另一方面,View-Model 没有 View 引用,所以我必须更加努力地处理数据绑定。
您必须使用 DelegateCommands(与 RelayCommands 相同,对吗?)。
嗯...更多问题...使用具有两个视图/用户控件的同一个 View-Model 是否安全?
哦...我昨天在玩 MVVM 时遇到了问题。
我为键绑定的东西创建了我的命令的CommandReference,并将这个引用分配给我的按钮的命令属性,好吧,CanExecuted 第一次工作但它没有更新IsEnabled 属性时CanExecuted 是真的。我通过将命令直接绑定到按钮而不使用引用来修复它。问题是:为什么有些代码将引用链接到对象,而其他代码为什么直接绑定命令?
我应该学习哪些与 MVVM 相关的知识? (我昨天看到了一个叫做附加行为的东西,但我不知道那是什么)。
我正在重写我使用 MVP 开发但现在使用 MVVM 开发的笔记应用程序。我将用命令替换事件(使用 DelegateCommand),消除 View-Model 上的视图引用,我认为这都是因为我看到的 MVVM 示例很像 MVP。
好吧,如果您指出我对这种模式的所有误解,我将不胜感激。
谢谢你,以后我会帮助下一个 MVVM 新手 :)
【问题讨论】:
标签: c# wpf design-patterns mvvm