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