将详细信息表单绑定到WPF/MVVM中的列表框

将详细信息表单绑定到WPF/MVVM中的列表框,wpf,mvvm,Wpf,Mvvm,我正在学习WPF/MVVM,我认为这可能是一个基本的问题 我有一个视图模型-viewmodelTitles。这将公开viewmodelTitle对象的ObservableCollection。(在本例中,标题为先生、夫人、博士等) 我已成功地将此绑定到ListView 我现在要做的是,当用户单击ListView中的项目时,表单的第二部分“详细信息”部分显示所选viewmodelTitle对象的详细信息。viewmodelTitle对象的Description属性将显示在文本框中。。。从而允许用户

我正在学习WPF/MVVM,我认为这可能是一个基本的问题

我有一个视图模型-viewmodelTitles。这将公开viewmodelTitle对象的ObservableCollection。(在本例中,标题为先生、夫人、博士等)

我已成功地将此绑定到ListView

我现在要做的是,当用户单击ListView中的项目时,表单的第二部分“详细信息”部分显示所选viewmodelTitle对象的详细信息。viewmodelTitle对象的Description属性将显示在文本框中。。。从而允许用户对其进行编辑

(在本例中,viewmodelTitle对象只有一个属性——Description——但假设这是一个“person”对象……我们可以在“details”表单中编辑名字、姓氏、地址、年龄、出生日期等。)

我知道我可以做一些事情,以防在选择更改时触发。。。但似乎有一种更为“数据绑定”的方法可以做到这一点


有人能帮忙吗?

您可以在视图模型上绑定
列表视图的
SelectedItem
。然后可以将该属性绑定到详细视图的
DataContext

下面是一个小图,它试图可视化如何在MVVM中实现主细节:

<ListView x:Name="listTitles" ItemsSource="{Binding Source=viewmodelTitles}">...
...
<TextBlock Text="{Binding ElementName=listTitles, Path=SelectedItem.Description}" />

。。。
...

我几乎总是这样。此外,我通常在ViewModel上放置一组ViewModel,而不是直接放置项。因此,在您的viewModelTitles中,是viewModelTitle的可观察集合。这样,当您在列表框中选择一个项目时,标题ViewModel与组成它的命令、属性和方法一起绑定为详细信息窗格的上下文。我在viewmodelTitles(“SelectedTitle”)上添加了一个属性,该属性带有一个返回viewmodelTitle类型的私有成员(“SelectedTitle”)。它只是将“值”存储到这个私有成员中,并调用RaisePropertyChanged事件。然后我将:SelectedItem=“{Binding SelectedTitle,Mode=TwoWay}”添加到ListView的XAML中。最后,我在网格中指定了DataContext=“{Binding SelectedTitle}”,该网格包装了我需要的所有文本框(好的……就是本例中的一个!),因此,非常感谢您的帮助。我明白这是怎么回事。谢谢。