如何在运行时获取datagrid单元格值(C#WPF)?

时间:2013-12-12 17:51:34

标签: c# wpf datagrid

我有一个通过数据绑定与实体框架链接到数据库的数据网格。它有3列,当应用程序运行时,用户可以直接在datagrid中添加新行。遵循xaml代码:

<DataGrid Name="dataGridIMP" Height="115" HorizontalAlignment="Left" VerticalAlignment="Top" AutoGenerateColumns="False" 
  GridLinesVisibility="None" ItemsSource="{Binding}" CellEditEnding="dataGridIMP_CellEditEnding">
<DataGrid.Columns>
     <DataGridComboBoxColumn Header="Importação" x:Name="colunaImp" DisplayMemberPath="Ref"
            SelectedValuePath="OID" SelectedValueBinding="{Binding Path=OIDImportacao}" />
     <DataGridComboBoxColumn Header="Finalidade Pag" x:Name="colunaFinalidade" DisplayMemberPath="Nome"
            SelectedValuePath="OID" SelectedValueBinding="{Binding Path=OIDTipoPagamento}"/>
     <DataGridTextColumn Header="Valor" Width="100" Binding="{Binding Path=ValorPorImportacao, Converter={StaticResource ConvDolarTexto}}"/>
</DataGrid.Columns>

在运行时,用户从数据网格的前两列(DataGridComboBoxColumns)的组合框中选择数据后,应用程序应从单元格(列)中获取这些信息,执行一些bacground查询/计算并填写第三列一些建议的价值。

我已经尝试通过获取对象实体值来做到这一点:

var rel = dataGridIMP.SelectedItem as RelacaoImpCboFIN;
int val1 = rel.OIDImportacao                //get the first column value (using entity object)
int val2 = rel.OIDTipoPagamento             //get the second column value (using entity object)

rel.ValorPorImportacao = somevalue          //set the third column value (using entity object)

但是,只有在用户进入下一行后才会将数据分配给实体对象。有谁知道如何在用户编辑每个单元格之后获取datagrid列(单元格)值?

1 个答案:

答案 0 :(得分:0)

您是否尝试过CellEditEnding事件? eventargs有一个'EditingElement'属性,它将为您提供实际的编辑元素(在本例中为ComboBox),您可以使用它来查找单元格中的'SelectedValue'。