如何在datatemplate

时间:2015-06-24 23:09:41

标签: vb.net mvvm combobox datacontext selectedvalue

这个问题与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的文本字段中显示每个人的实际状态?

1 个答案:

答案 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" 

试验和错误解决了! : - )