【问题标题】:WPF ComboBox XML Binding AND ViewModel Binding?WPF ComboBox XML 绑定和 ViewModel 绑定?
【发布时间】:2011-06-25 19:36:34
【问题描述】:

我有一个包含国家/地区列表的 XML 文件。我在 xaml 中使用 XMLDataProvider 来绑定组合框的 ItemsSource。我还有一个 viewModel,它带有一个我想将所选值绑定到的属性。我尝试使用本地命名空间绑定到视图模型:

SelectedValuePath="Country"

SelectedValue="{Binding local:Project.ProjectInfo.CompanyCountry}"

但是我必须为 xmlProvider 设置 DataContext。

有没有办法让绑定在 viewModel 中工作?

提前致谢。

【问题讨论】:

  • 您是否将 viewModel 设置为 DataContext ?

标签: c# wpf data-binding binding combobox


【解决方案1】:

将您的 ViewModel 放入您的 .Resources 并绑定到它?

<UserControl .... xmlns:local="Project">
    <UserControl.Resources>
        <local:ProjectInfo x:key="ProjectInfo"/>
    </UserControl.Resources>
    <UserControl.DataContext>
        <XmlObjectDataProvider ... />
    </UserControl.DataContext>
    <ComboBox ItemsSource="{Binding}" SelectedValuePath="Country" SelectedValue="{Binding CompanyCountry,Source={StaticResource ProjectInfo}}"/>

HTH。基本上你有两个数据源——一个在数据上下文中,另一个在你的资源中。

编辑:如果需要,您可以切换两者,这并不重要。您可以在资源中拥有任意数量的数据源。

【讨论】:

  • 效果很好,谢谢!试图支持你的评论,不要
  • @jeremywho:既然这行得通,您可能应该通过单击投票下方左侧的复选标记大纲来接受它作为答案。
【解决方案2】:

如果您的 ViewModel 是视图的公共属性,您可以命名您的视图并以这种方式访问​​它。

<Window Name="Window"
        ...>

<ComboBox SelectedValue="{Binding ElementName=Window, Path=ViewModel.Property}" ... />

...或类似的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2011-11-01
    • 2015-04-07
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多