【问题标题】:MVVM how best to display ListBox.SlectedItemMVVM 如何最好地显示 ListBox.SelectedItem
【发布时间】:2013-05-20 19:00:18
【问题描述】:

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

据我所知,构建视图有两种方法。

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

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

【问题讨论】:

    标签: c# wpf mvvm listbox


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的反馈。当我说“绑定到 ListBox 中的选定项目”时,我实际上是指通过“MainWindowViewModel”上的属性来执行此操作。我将编辑问题以进行澄清。
    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多