【问题标题】:ComboBox bindings need different DatacontextsComboBox 绑定需要不同的 Datacontexts
【发布时间】:2012-11-18 07:02:24
【问题描述】:

我对 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}" /> 

任何帮助将不胜感激。

【问题讨论】:

    标签: wpf


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这很好用。显然,我在 WPF 上有更多的学习要做。
    猜你喜欢
    • 2011-11-06
    • 2011-05-02
    • 2022-01-18
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多