2016-10-21 16 views
-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 
} 

ことを行うことができますどのように

は、事前にありがとうございます。私はきちんと理解していれば、以下の

+2

新しい値でそれを更新する前に、古いアイテムを保存します

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

助けることができる、それが変わる前にコピーを保管してください。あなたはプライベートフィールド 'Item _prevSelectedItem;'に最後のものを残しておくこともできますし、プライベート 'List _selectedItemHistory'を持つこともできます。それはちょうどプログラミングです。 –

+0

@EdPlunkett:編集をクリックすると、コレクションの古い値(アイテムの編集を参照)をキャッチして、ietemの名前を変更して保存をクリックすると、_prevItemsも変更されていることがわかります。 Edit Itemのブレークポイント、および新しいデータを保存しようとすると、ブレークポイントは保存のみで停止します。 – Hicham4

+0

私はEditItemsが何をやるべきか、誰がそれを呼び出すのかは知らない。コマンド実行メソッドですか?何をしているはずですか?なぜあなたは 'itms'コレクションと' items'を持っていますか?そのうちのどれが 'SelectedValue'と関係がありますか?なぜ '_prevItems'を' itms'の新しい値に設定していますか? –

答えて

0

する。これは

関連する問題