私があなたを正しく理解していれば、プロパティが変更SelectedItem
されたときに、ビューモデルの属性にバッキングフィールドの以前の値を保存する必要があり、ユーザーが確認ダイアログをキャンセルすることを決定した場合は、SelectedItem
バッキングフィールドを以前の値に復元する必要があります.
バッキング フィールドに通常のプロパティを使用している場合は、この動作を実装する Set メソッドを記述できます。
private object selectedItemPreviousValue;
private object selectedItemBackingField;
public object SelectedItemBackingField
{
get
{
return selectedItemBackingField;
}
set
{
selectedItemPreviousValue = selectedItemBackingField;
selectedItemBackingField = value;
}
}
依存プロパティを使用している場合は、次のようなコールバックPropertyMetada
を提供する必要があります。DependencyPropertyChantged
public object SelectedItemBackingField
{
get { return (object)GetValue(SelectedItemBackingFieldProperty); }
set { SetValue(SelectedItemBackingFieldProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedItemBackingField. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedItemBackingFieldProperty =
DependencyProperty.Register("SelectedItemBackingField", typeof(object), typeof(MapApp), new PropertyMetadata(new PropertyChangedCallback(OnSelectedItemChanged));
public static OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
MyViewModel vm = (MyViewModel)sender;
vm.selectedItemPreviousValue = args.OldValue;
}