将 Datagrid 单元格原始值与 CellEditEnding 事件中的编辑值进行比较

use*_*627 4 c# silverlight datagrid

我有一个根据用户在我的 Datagrid 行中输入的数字更新的总计变量。我想在更改每一行单元格时更新该值。这是我到目前为止所做的:

private void QuotationDG_CellEditEnding(object sender, 

DataGridCellEditEndingEventArgs e)
{

    int ColumnIndex = e.Column.DisplayIndex;

    Double amount= Double.Parse(((TextBox)e.EditingElement).Text);
    Cat1SubTotal += amount;
    GrandTotal += amount;
}
Run Code Online (Sandbox Code Playgroud)

每次用户输入新值时,此代码都会将金额相加。但是,如果用户编辑了现有值,那么这将在不删除旧值的情况下添加新值,因此将显示不正确的总数。

我需要做这样的事情:

Cat1SubTotal += (NewValue-OriginalValue)
Run Code Online (Sandbox Code Playgroud)

d3s*_*ssy 5

当用户开始编辑时,处理 BeginningEdit 事件并将值存储在私有变量中。然后将其与 CellEditEnding 事件中处理的新值进行比较。

 public partial class MainWindow : Window
{
    private ViewModel VM { get; set; }
    private DataGridCellInfo activeCellAtEdit { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        this.VM = new ViewModel();
        this.DataContext = this.VM;
    }

    private void MyDataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
    {
        this.activeCellAtEdit = MyDataGrid.CurrentCell;
    }

    private void MyDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
         //assumes columns are all TextBoxes
        TextBox t = e.EditingElement as TextBox; 
        string editedCellValue = t.Text.ToString();

        //assumes item property bound to datagrid is of type string
        string originalValue = activeCellAtEdit.Item.SomeStringProperty;

        //compare strings
        if(editedCellValue != originalValue)
        {
            //do something
        }

    }

}
Run Code Online (Sandbox Code Playgroud)