在具有依赖属性的双向绑定模式下,属性不会更改

本文关键字:属性 模式 依赖 绑定 | 更新日期: 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}"

我想要注意的是,绑定确实工作,当我改变模型中的属性时,回调是触发的,这意味着依赖属性改变了。

我只是不明白为什么它不能以另一种方式工作,我希望当我改变依赖属性时,模型中的属性也会改变。

在具有依赖属性的双向绑定模式下,属性不会更改

强制回调更适合这样做。属性更改回调用于对值的更改做出反应。强制回调是为了确保基于当前状态的值是有效的,这更像是你在这里所做的。