这个问题与MVVM项目结构有关。
为了在ListView中显示数据,我使用DataTemplate。 ListView的ItemsSource是一个ObservableCollection(Person)。到目前为止没什么特别的。
但是在DataTemplate中我想在ComboBox中显示每个Person的State属性,其中显示实际值,用户可以选择另一个State。 国家来自国家,即国家的ObservableCollection。
为了显示所有状态,我需要将DataContext绑定到" toplevel" ViewModel。但是,我如何再次来到个人,这是在DataTemplate中显示的?或者我是否需要另一种解决此问题的方法?
在XAML中,我有这个:
<ComboBox DataContext="{Binding DataContext, ElementName=pageRoot}" ItemsSource="{Binding States}" DisplayMemberPath="Description" SelectedValue="{Binding ??????}" SelectedValuePath="ID" />
我的问题是:我需要设置什么才能正确绑定SelectedValue,以便在Combobox的文本字段中显示每个人的实际状态?
答案 0 :(得分:1)
知道了! 对于ComboBox的ItemsSource,我需要DataContext层次结构的“更高”级别。我没有将整个ComboBox绑定到那个DataContext,而只需要将ItemsSource绑定到该级别。
现在修正后的代码如下:
<ComboBox
ItemsSource="{Binding DataContext.States, ElementName=pageRoot}"
DisplayMemberPath="Description"
SelectedValue="{Binding State.ID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="ID"
试验和错误解决了! : - )