selecteditems personalizar examples ejemplo columns c# wpf datagrid

personalizar - WPF C#Obtenga la suma total de una columna DataGrid



selecteditems datagrid c# (2)

for (int i = 0; i < tblData.Items.Count; ++i) { //(decimal.Parse((tblData.SelectedCells[3].Column.GetCellContent(item) as TextBlock).Text)) sum += (decimal.Parse((tblData.Columns[3].GetCellContent(tblData.Items[i])as TextBlock).Text)); }

Necesito sumar todos los valores en un DataGrid cada vez que se dispara un evento (probablemente CelLEditEnding) y mostrarlo en una etiqueta. Tengo el siguiente código:

private void tblData_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { double sum = 0; //System.Windows.MessageBox.Show(tblData.SelectedItems.Count.ToString()); for (int i = 0; i < tblData.SelectedItems.Count; i++) { TextBlock tb = tblData.Columns[3].GetCellContent(tblData.SelectedItems[i]) as TextBlock; double test = Convert.ToDouble(tb.Text); sum = sum + test; lblTotal.Content = "$ " + sum.ToString(); //System.Windows.MessageBox.Show(sum.ToString());

El problema es que solo una fila se ve afectada, la única fila que realmente se suma y se muestra en la etiqueta es aleatoria. Como puede ver, agregué un cuadro de mensaje para mostrarme el número total de filas que están en DataGrid, el resultado es 1 cada vez. No sé cómo solucionar este problema, soy muy novato en programación y tengo problemas con la jerga técnica. Cualquier ayuda es muy apreciada.


for (int i = 0; i < dataGrid.Items.Count; ++i) sum += (decimal.Parse((dataGrid.Columns[4].GetCellContent(dataGrid.Items[i]) as TextBlock).Text));