我对WPF相对较新,我坚持看似VMMV环境中的一个相对常见的场景。它的核心是为组合框设置datacontext。
我有一个带
的视图模型我的计划是使用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}" />
非常感谢任何帮助。
答案 0 :(得分:0)
无论如何,您不必仅绑定到DataContext,一种方法是绑定到网格dataContext。
SelectedValue="{Binding ElementName=MyGrid, Path=DataContext.YourStringProperty}"