获取MVVM中属性的OldValue



我试图在MVVM中获得属性的旧值,当我想保存它时。我想知道selectedItem的初始值,因为我想知道1-知道项目是否被更改2-用字段UpdatedDate更新表3-如果价格有变化,我想更新另一个价格历史表。

我该怎么做呢

    public class ItemViewModel : ObjectBase
{
    public ObservableCollection<Item> itms = new ObservableCollection<Item>();
    private ObservableCollection<Item> _prevItems;

    private Item selectedItem;
    public Item SelectedItem
                {
                    get
                    {
                        return this.selectedItem;
                    }
                    set
                    {
                        this.selectedItem= value;
                        this.RaisePropertyChanged("SelectedItem");
                    }
                }
    #region SaveItem
    private void SaveItem(object obj)
        {
            if (this.items != _prevItems)
            {
                this.selectedItem.DateUpdated = this.DateUpdated;
                this.item.EditAsync(this.selectedItem );
            }
            else 
            {
                this.item.EditAsync(this.selectedItem );
            }
            this.LoadData();
          }
    #endregion
    #region Items
     private ObservableCollection<Item> items;
    public ObservableCollection<Item>  Items
    {
        get { return this.items; }
        set 
        {
            this.items = value;
            itms = items;
            this.RaisePropertyChanged("Items"); 
        }
    } 
    #endregion          
    #region EditItem
    private void EditItem(object obj)
    {
        itms = items;
        _prevItems = itms;
    }
    #endregion          
}
public class ObjectBase : INotifyPropertyChanged 
{       
    public event PropertyChangedEventHandler PropertyChanged;
    #region RaisePropertyChanged
    protected void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));               
        }
    }
    #endregion
}   

提前谢谢你。

如果我理解正确的话,下面会有帮助

public ObservableCollection<Item> itms
{
get{ return _itms;}
set
{
if(value != _itms)
{
_prevItems = _itms;
_itms = value;
}
}

这将在使用新值

更新之前保存旧项

最新更新