ComboBox绑定需要不同的Datacontexts

时间:2012-11-18 07:02:24

标签: wpf

我对WPF相对较新,我坚持看似VMMV环境中的一个相对常见的场景。它的核心是为组合框设置datacontext。

我有一个带

的视图模型
  • 字符串属性
  • 一个XmlDataProvider属性。

我的计划是使用XmlDataProvider填充组合框项目,字符串属性将绑定到组合框的SelectedItem。

在我的XAML中,顶级网格将DataContext设置为ViewModel。 在网格中,我有一个如下定义的组合框

<ComboBox x:Name="CategoryCombo" HorizontalAlignment="Left" Height="30" 
Margin="54,70,0,0" VerticalAlignment="Top" Width="233"  
ItemsSource="{Binding XPath=/OccupationCategory/@name}" 
DataContext="{Binding myProvider}"/> 

列表正确填充。我的问题是,为了获得XmlDataProvider 为了正常工作,我需要将组合框的DataContext绑定到我的Viewmodel中的XMLDataProvider属性。

据我所知,这意味着我现在无法将SelectedItem绑定到ViewModel中的String属性。这需要我将Datacontext设置回viewmodel。

请注意。我确实尝试过XAML的各种变体,这不会强迫我将wholecombobox的dataContext设置为XmlDataProvider,但没有一个工作。下面的XAML无法填充列表。从绑定错误来看,在这种情况下,数据源仍然指向viewmodel,而不是XMLDataProvider

<ComboBox x:Name="CategoryCombo" HorizontalAlignment="Left" Height="30" 
Margin="54,70,0,0" VerticalAlignment="Top" Width="233"  
ItemsSource="{Binding myProvider, XPath=/OccupationCategory/@name}" /> 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

无论如何,您不必仅绑定到DataContext,一种方法是绑定到网格dataContext。

SelectedValue="{Binding ElementName=MyGrid, Path=DataContext.YourStringProperty}"