我有以下依赖属性:
public bool UndoZoom
{
get { return (bool)GetValue(UndoZoomProperty); }
set { SetValue(UndoZoomProperty, value); }
}
// Using a DependencyProperty as the backing store for UndoZoom. This enables animation, styling, binding, etc...
public static readonly DependencyProperty UndoZoomProperty =
DependencyProperty.Register("UndoZoom", typeof(bool), typeof(ZoomBehavior), new PropertyMetadata(false, new PropertyChangedCallback(OnUndoZoomChanged)));
在回调方法上,我将此属性更改为false:
private static void OnUndoZoomChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
ZoomBehavior zoomBehavior = sender as ZoomBehavior;
if (zoomBehavior == null || zoomBehavior.UndoZoom == false)
return;
//DO SOMETHING...
zoomBehavior.UndoZoom = false;
//ALSO TRY: zoomBehavior.SetValue(UndoZoomProperty, false);
}
依赖项属性改变很好,但绑定它的属性不是!
绑定看起来像那样:
UndoZoom="{Binding MyClass.UndoZoom,Mode=TwoWay}"
我想注意绑定是工作,当我更改模型中的属性时,回调就是火,这意味着依赖属性发生了变化。
我只是不明白为什么它不能以其他方式工作,我希望当我更改依赖属性时,模型中的属性也会改变。
我很乐意帮忙。
答案 0 :(得分:1)
强制回调更适合这样做。属性改变回调是为了对价值的变化做出反应。强制回调用于确保该值基于当前状态有效,感觉更像您在此处所做的那样。