2015-06-24 98 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" 

試錯的作品了! :-)

相關問題