如何通过单击按钮撤消所有wpf数据网格更改

时间:2016-01-09 06:05:35

标签: wpf wpfdatagrid

我已将ObservableCollection绑定到datagrid的itemsource, 现在对于在datagrid上执行的每个操作,我将更改存储在undo-redo堆栈中,我们有两个用于撤消和重做的工具栏按钮,所以我们支持点击这些按钮时的undo-redo,现在我们有一个要求,我们想要提供一个新按钮,它应该在一次单击时撤消所有网格更改,它应该清除撤消堆栈。     目前,我正在调用业务逻辑来获取原始数据并重新加载数据网格,因为我已经发送到网格的原始数据被修改并且接受了更改。       我试图看看我是否可以使用undo-redo堆栈在初始加载时获得数据的原始状态,而不会在datagrid中进行多次刷新[用户不应该感觉多次刷新hapenning]?     我可以在将数据加载到datagrid之前维护数据的副本,但是想知道我是否可以通过undo-redo堆栈或observablecollections的任何函数来实现这一点?

1 个答案:

答案 0 :(得分:0)

...
private myDBDataContext dc = new myDBDataContext(); //context DB
public MainWindow()
{
    InitializeComponent();

//binding the datagrid (WPF) with context db and table
    if (dc.DatabaseExists())
    {
        dataGrid.ItemsSource = dc.myTables;
     }
}
private void Refres_Click(object sender, RoutedEventArgs e)
{
    //call the refresh with "OverwriteCurrentValues" (this is what you need)
    dc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dc.myTables);
}