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

时间:2015-05-21 08:05:01

标签: c# wpf mvvm dependency-properties

我有以下依赖属性:

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}"

我想注意绑定是工作,当我更改模型中的属性时,回调就是火,这意味着依赖属性发生了变化。

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

我很乐意帮忙。

1 个答案:

答案 0 :(得分:1)

强制回调更适合这样做。属性改变回调是为了对价值的变化做出反应。强制回调用于确保该值基于当前状态有效,感觉更像您在此处所做的那样。