获取datagrid中单元格的先前值

时间:2014-05-23 14:08:51

标签: c# wpf datagrid

首先抱歉我的英语。我是新的C#,wpf和这类事。 我正在使用实体框架,我正在使用ObservableCollection绑定数据网格。 我需要获取单元格的旧值并将其与新值进行比较。 在数据库中,实体具有旧值,因为我没有保存更改。 我的问题是,当我尝试执行find(context.Find(reference.Id);)时,返回find的元素具有网格的新值。

我的XAML有:

<DataGrid x:Name="datagrid" PreviewKeyDown="dataGrid_PreviewKeyDown" AutoGenerateColumns ="False" ItemsSource="{Binding Path=References, ElementName=referenceWindow, Mode=TwoWay}"

我的.cs是这样的:

 ObservableCollection<Reference> References = new  ObservableCollection<Reference> References(context.References);

我如何获得旧值?

由于

2 个答案:

答案 0 :(得分:1)

如何在您的文件夹属性的setter中触发事件,并将旧名称传递给它。或者你可以在你的setter中调用一个方法来执行你需要做的事情。我想我的观点是,我相信在不关心用户界面的情况下处理会更容易。

答案 1 :(得分:0)

作为Kik我会说创建一个在更改属性时被触发的方法。 当我们看不到你在做什么,除了数据绑定之外,有点难以举出一个例子。 我个人会跳过双向模式,并为整个对象创建一个方法。

您可以像这样使用RowEditEnding:

<DataGrid x:Name="DataGrid" RowEditEnding="DataGrid_OnRowEditEnding"  AutoGenerateColumns="False" Margin="5">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
            <DataGridTextColumn Header="Age" Binding="{Binding Age, UpdateSourceTrigger=PropertyChanged}"/>
        </DataGrid.Columns>

    </DataGrid>

然后在这样的代码中:

private void DataGrid_OnRowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
    {
        var datag = (DataGrid) sender;
        var p = (Person) datag.SelectedValue;
        var p1 = (Person) e.Row.Item;
        Debug.WriteLine(p.Name + ", " + p.Age);
        Debug.WriteLine(p1.Name + ", "+ p1.Age);
    }

这样您就可以获得数据库项目和新项目。 你可以比较并做你想做的事。