0

我对 WPF 相对较新,我被困在 VMMV 环境中看起来相对常见的场景中。它以设置组合框的数据上下文为中心。

我有一个视图模型

  • 字符串属性
  • 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 设置回视图模型。

笔记。我确实尝试了 XAML 的各种变体,这些变体不会强迫我将整个组合框的 dataContext 设置为 XmlDataProvider,但没有一个起作用。下面的 XAML 未能填充列表。从绑定错误看来,在这种情况下,数据源仍然指向视图模型,而不是 XMLDataProvider

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

任何帮助将不胜感激。

4

1 回答 1

0

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

SelectedValue="{Binding ElementName=MyGrid, Path=DataContext.YourStringProperty}"
于 2012-11-18T07:53:07.067 回答