0

我有一个 ListBox 绑定到我的屏幕 LHS 上的 ViewModel 对象列表。ListBox.SlectedItem 绑定到我的“MainWindowViewModel”上的一个属性,称为 CurrentItem。在 RHS 上,我有一个大区域来详细显示所选项目,其中包含许多用于编辑和浏览 ViewModel 包含的信息的嵌套控件。

我知道有两种构建视图的方法。

  1. RHS 上的大面积区域是 ContentPresenter,其 Content 属性绑定到 CurrentItem。在我的资源中,定义要与我的 ViewModel 对象一起使用的模板。
  2. RHS 上的大面积区域是一个固定的 UserControl,其中包含显示我的 ViewModel 所需的所有 xaml。我将 UserControl 的 DataContext 属性绑定到 CurrentItem。

哪种方法更好,为什么?也许选项 2 通常更好,但是当 ListBox 中有不同类型的视图模型时可以使用选项 1,每个模型都有自己的模板?

4

1 回答 1

1

就我个人而言,我不会直接绑定到 ViewModel 中的选定对象,因为这样做会破坏 MVVM 模式。

我建议做的是为整个视图创建一个 ViewModel 包括您的 ViewModel 列表并添加一个绑定到所选项目的 SelectedViewModel 属性。所以选择信息也在 ViewModel 中。

然后您可以将“父”视图模型的 SelectedObject 绑定到 RHS。我建议阅读这篇MSDN 文章,了解如何使用 MVVM 模式显示 SelectedItems。

于 2013-05-20T10:40:59.483 回答