-1
MVVMのプロパティの古い値を保存しようとしています。 アイテムが変更されたかどうかを知りたいので、selectedItemの初期値を知りたい 2フィールドでテーブルを更新するUpdatedDate 3-価格が変更された場合、別のテーブルを更新したい価格の歴史について私はMVVMのプロパティのOldValueを取得
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
}
ことを行うことができますどのように
は、事前にありがとうございます。私はきちんと理解していれば、以下の
新しい値でそれを更新する前に、古いアイテムを保存します
助けることができる、それが変わる前にコピーを保管してください。あなたはプライベートフィールド 'Item _prevSelectedItem;'に最後のものを残しておくこともできますし、プライベート 'List- _selectedItemHistory'を持つこともできます。それはちょうどプログラミングです。 –
@EdPlunkett:編集をクリックすると、コレクションの古い値(アイテムの編集を参照)をキャッチして、ietemの名前を変更して保存をクリックすると、_prevItemsも変更されていることがわかります。 Edit Itemのブレークポイント、および新しいデータを保存しようとすると、ブレークポイントは保存のみで停止します。 – Hicham4
私はEditItemsが何をやるべきか、誰がそれを呼び出すのかは知らない。コマンド実行メソッドですか?何をしているはずですか?なぜあなたは 'itms'コレクションと' items'を持っていますか?そのうちのどれが 'SelectedValue'と関係がありますか?なぜ '_prevItems'を' itms'の新しい値に設定していますか? –