gpt4 book ai didi

wpf - 您在 MVVM 中绑定(bind) DataContext 的策略是什么?

转载 作者:行者123 更新时间:2023-12-04 13:30:08 28 4
gpt4 key购买 nike

这两个 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 绑定(bind),我是 试图确定关于“ 如何在 MVVM 模式 中完成 DataContext 绑定(bind)”的一些坚实基础。

当您决定将 DataContext 绑定(bind)到某个东西时,您会想到什么:为什么要绑定(bind) 的 DataContext?窗口/ View /列表框/等 ObservableCollection/ModelView/等 ?这里有什么优点、缺点和策略?

任何输入表示赞赏。

最佳答案

他们有没有提到为什么 Silverlight 使用了不同的方法?这可能只是平台的限制。

推荐的方法是绝对使用 View 模型本身作为 View 的 DataContext 。实际上,您应该创建 View 模型并让 WPF 为您解析 View ,而不是显式地创建 View 。为此,请注册一个 DataTemplate :

<DataTemplate DataType="{x:Type local:MyViewModel}">
<local:MyView/>
</DataTemplate>

然后,您只需将 View 模型实例粘贴到 ContentControlItemsControl 或其他任何内容中,WPF 将使用适当的 DataTemplate 呈现它。凭借 WPF 的模板系统,该 DataTemplate 将具有 View 模型作为其 DataContext

关于wpf - 您在 MVVM 中绑定(bind) DataContext 的策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709158/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com