如果我理解正確,當屬性發生變化時,您應該將之前的SelectedItem
支持字段的值存儲在您的視圖模型上的atrribute上,並且當用戶決定取消確認對話框時,您應該還原SelectedItem
支持字段爲以前的值。
如果您使用常規屬性的支持字段,你可以寫一個實現此行爲的設置方法:
private object selectedItemPreviousValue;
private object selectedItemBackingField;
public object SelectedItemBackingField
{
get
{
return selectedItemBackingField;
}
set
{
selectedItemPreviousValue = selectedItemBackingField;
selectedItemBackingField = value;
}
}
如果您使用dependencie性能,你必須提供一個一個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;
}
是的,我結束了這樣做。不過,我希望有人告訴我如何更新BindingExpression對象綁定的目標端。 –