2012-11-18 25 views
0

對於WPF來說,我相對比較新,而且我被困在VMMV環境中相當常見的場景中。它圍繞爲combobox設置datacontext。ComboBox綁定需要不同的Datacontexts

我有

  • 字符串屬性
  • 一個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 正常工作,我需要將ComboBox的DataContext綁定到ViewModel中的XMLDataProvider屬性。

據我可以看到這意味着我現在不能將SelectedItem綁定到我的ViewModel中的String屬性。這將需要我將Datacontext設置回視圖模型。

注意。我做了各種各樣的XAML實驗,它們不會強迫我將wholecombobox的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}" /> 

任何援助將不勝感激。

回答

0

無論如何,你不必只綁定到DataContext中,一種方法是綁定到grid dataContext。

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

謝謝,這個作品完美。很明顯,我對WPF有更多的學習。 – user1833062