在具有依赖属性的双向绑定模式下,属性不会更改
本文关键字:属性 模式 依赖 绑定 | 更新日期: 2023-09-27 17:50:17
我有以下依赖属性:
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}"
我想要注意的是,绑定确实工作,当我改变模型中的属性时,回调是触发的,这意味着依赖属性改变了。
我只是不明白为什么它不能以另一种方式工作,我希望当我改变依赖属性时,模型中的属性也会改变。
强制回调更适合这样做。属性更改回调用于对值的更改做出反应。强制回调是为了确保基于当前状态的值是有效的,这更像是你在这里所做的。