2015-06-24 62 views
1

这个问题与MVVM项目结构有关。如何在datatemplate中设置combobox的selectedvalue和itemssource

用于在ListView中显示数据我使用DataTemplate。 ListView的ItemsSource是ObservableCollection(Person)。迄今为止没有特别的。

但是在DataTemplate中,我想显示ComboBox中每个Person的State属性,其中显示实际值,并且用户可以选择另一个State。 国家来自国家,这是一个ObservableCollection(国家)。

为了显示所有的状态,我需要将DataContext绑定到ViewModel的“顶层”。但是我怎样才能再次回到个人身上呢?这是在DataTemplate中显示的?或者我需要另一种方法解决这个问题?

在XAML我有这样的:

<ComboBox DataContext="{Binding DataContext, ElementName=pageRoot}" ItemsSource="{Binding States}" DisplayMemberPath="Description" SelectedValue="{Binding ??????}" SelectedValuePath="ID" /> 

我的问题是:我需要什么,以便正确地绑定的SelectedValue设置,使其显示的文本字段中每人的实际状态组合框?

回答

1

Got it! 对于ComboBox的ItemsSource,我需要DataContext层次结构的“更高”级别。我只需要将ItemsSource绑定到该级别,而不是将整个ComboBox绑定到该DataContext。

改正的代码现在看起来像这样:

<ComboBox      
       ItemsSource="{Binding DataContext.States, ElementName=pageRoot}" 
       DisplayMemberPath="Description" 
       SelectedValue="{Binding State.ID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
       SelectedValuePath="ID" 

试错的作品了! :-)

相关问题