MVVM如何最好地显示listbox . selected item

本文关键字:listbox selected item 显示 何最好 MVVM | 更新日期: 2023-09-27 18:14:28

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

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

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

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

MVVM如何最好地显示listbox . selected item

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

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

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