将更改从 LINQ 还原为 SQL 后 WPF 更新 UI

WPF Update UI after Revert Changes From LINQ to SQL

我阅读了这个问题,但不幸的是,在还原更改后没有找到更新 ui 的任何解决方案。

如何拒绝 Linq to SQL 的 DataContext 中的所有更改?

我的所有属性都派生自 INotifyPropertyChanged。

var changeSet = dataContext.GetChangeSet();
if (changeSet != null)
{
    var updates = changeSet.Updates.ToArray();
    dataContext.Refresh(RefreshMode.OverwriteCurrentValues, changeSet.Updates);

    foreach (var o in updates)
    {
        INotifyPropertyChanged entity = (INotifyPropertyChanged)o;
        // What i have to do to force them trigger PropertyChanged event ???
    }
}

首先我向我所有的 Linq2SQL 添加一个方法 类:

public partial class Setting
{
    public void SendPropertyChangedFromOutside(string propName)
    {
        SendPropertyChanged(propName);
    }
}

public partial class User
{
    public void SendPropertyChangedFromOutside(string propName)
    {
        SendPropertyChanged(propName);
    }
}

然后调用 UndoDBChanges 方法:

public static void UndoDBChanges(System.Data.Linq.DataContext dataContext) {
var changeSet = dataContext.GetChangeSet();
if (changeSet != null)
{
    var updates = changeSet.Updates.ToArray();
    dataContext.Refresh(RefreshMode.OverwriteCurrentValues, changeSet.Updates);

    foreach (var o in updates)
    {
        try
        {
            Type t = o.GetType();
            dynamic obj = Convert.ChangeType(o, t);

            foreach (System.Reflection.PropertyInfo prop in t.GetProperties())
            {
                obj.SendPropertyChangedFromOutside(prop.Name);
            }
        }
        catch
        { }
    }
}}