【问题标题】:How to bind DataGrid's ItemsSource to one ViewModel and DataGrid's SelectedItem to another?如何将 DataGrid 的 ItemsSource 绑定到一个 ViewModel 并将 DataGrid 的 SelectedItem 绑定到另一个?
【发布时间】:2017-05-11 06:52:26
【问题描述】:

C#

DataContext="{Binding ProveedoresViewModel, Mode=OneWay, Source={StaticResource LocatorViewModel}}"

XAML

<DataGrid Margin="10" 
          ItemsSource="{Binding ListaProveedores, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
          GridLinesVisibility="All"
          SelectedItem="{Binding ProveedorSeleccionado, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          AutoGenerateColumns="False" 
          CanUserAddRows="False" 
          BorderThickness="1" 
          BorderBrush="Black">

ListaProveedores 是 ViewModel1,ProveedorSeleccionado 是 ViewModel2。 我需要为ProveedorSeleccionado 指定数据上下文

【问题讨论】:

    标签: c# wpf visual-studio mvvm data-binding


    【解决方案1】:

    假设 LocatorViewModel 资源通过公共属性公开两个视图模型(ProveedoresViewModel 和“ViewModel2”或其他任何一个),您可以将 DataGrid 的 SelectedItem 属性绑定到“ViewModel2”的子属性:

    <DataGrid Margin="10" ItemsSource="{Binding ListaProveedores, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" GridLinesVisibility="All"
                      SelectedItem="{Binding ViewModel2.ProveedorSeleccionado, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                      AutoGenerateColumns="False" CanUserAddRows="False" BorderThickness="1" BorderBrush="Black">
    

    您还可以将绑定的 Source 显式设置为另一个资源,例如:

    SelectedItem="{Binding ProveedorSeleccionado, Source={StaticResource ViewModel2}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多