更新之前保存旧项
我试图在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;
}
}
这将在使用新值