對於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}" />
任何援助將不勝感激。
謝謝,這個作品完美。很明顯,我對WPF有更多的學習。 – user1833062