【发布时间】:2010-10-17 02:05:14
【问题描述】:
这两个 1 小时的视频分步展示了如何使用 MVVM 模式在 Silverlight 和 WPF 中构建简单的测验应用程序:
Implementing Model-View-ViewModel in Silverlight
Implementing Model-View-ViewModel in WPF
令我惊讶的是它们在结构上有何不同,例如,它们如何使用 DataBinding:
在 Silverlight 方法中,我们将 View 的 DataContext 设置为 ViewModel 中的 ObservableCollection:
<views:QuestionView x:Name="QuestionDataView" />
QuestionViewModel qdata = new QuestionViewModel();
qdata.FetchQuestions();
QuestionDataView.DataContext = qdata.Questions;
在 WPF 方法中,我们将 Window 的 DataContext 设置为 ViewModel 本身。
<view:QuizView Margin="4" />
base.DataContext = new QuizViewModel(Quiz.Create());
似乎我看到的每个 MVVM 示例都以稍微新的变体进行 DataContext 绑定,我试图确定一些坚实的基础,即“DataContext 绑定是如何完成的在 MVVM 模式中”。
当您决定将 DataContext 绑定到某个东西时,您会想到什么:为什么要将 Window / View / ListBox / etc. 的 DataContext 绑定到 ObservableCollection / ModelView / etc。 ?这里有什么优点、缺点和策略?
任何意见表示赞赏。
【问题讨论】:
-
“在 Silverlight 中实现模型-视图-视图模型”视频太糟糕了。 Tim Heuer 创建了一个存储库并将其称为 ViewModel。 Josh Smith 的 WPF 视频要好得多。他实际上知道他在说什么。
标签: wpf silverlight mvvm conceptual