如何使用连接到不同 ItemSource 的 DataGridTemplateColumn 获取行值

本文关键字:DataGridTemplateColumn 获取 ItemSource 何使用 连接 | 更新日期: 2023-09-27 18:24:55

我正在使用WPF MVVM DataGrid,其中一列相当于DataGridComboBoxColumn,但由DataGridTemplateColumn组成。DataGrid 本身绑定到一个对象,ComboBox 列绑定到单独的对象。

XAML 代码为:

<DataGrid Grid.Column="0" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding ItemNamesSetting}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Item1" Binding="{Binding Path=OriginalItemName}" />
        <DataGridTextColumn Header="Item2" Binding="{Binding Path=FinalItemName}" />
        <DataGridTemplateColumn Header="Attribute">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox ItemsSource="{Binding DataContext.AttributesBindingList, ElementName=ThirdStepTab}" DisplayMemberPath="PropName" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Item3" Binding="{Binding Path=Separatopr}" />
    </DataGrid.Columns>
</DataGrid>

问题是如何获取整行数据?我计划有一个"保存"按钮将数据发送到数据库,我需要从不同的环境中获取文本列中的数据 + ComboBox 中的数据 - 逐行。有没有办法做到这一点?

谢谢。

如何使用连接到不同 ItemSource 的 DataGridTemplateColumn 获取行值

您需要将 DataGridSelectedItem 属性绑定到 MVVM 视图模型。此外,视图模型的相关属性之一应绑定到组合框SelectedValue

<DataGrid Grid.Column="0" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding ItemNamesSetting}" SelectedItem="{Binding VMPropertyName}" >
      <DataGrid.Columns >
          <DataGridTextColumn Header="Item1" Binding="{Binding Path=OriginalItemName}" />
          <DataGridTextColumn Header="Item2" Binding="{Binding Path=FinalItemName}" />                                        
          <DataGridTemplateColumn Header="Attribute">
                                        <DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                  <ComboBox ItemsSource="{Binding DataContext.AttributesBindingList, ElementName=ThirdStepTab}" DisplayMemberPath="PropName" SelectedValue="{Binding PropertyOfVM}"  />
               </DataTemplate>                           </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
          <DataGridTextColumn Header="Item3" Binding="{Binding Path=Separatopr}" />
相关文章:
  • 没有找到相关文章