C# WPF绑定是否绕过依赖属性的代码隐藏设置器?

C# WPF绑定是否绕过依赖属性的代码隐藏设置器?,c#,binding,C#,Binding,我可能做错了。。。跟我一起走吧 我正在使用用户可以绑定的属性创建一个用户控件。在属性的setter中,我将PropertyChanged侦听器绑定到属性,以便对其状态的更改做出反应。此用户控件的隐藏代码如下所示: public static readonly DependencyProperty NodeProperty = DependencyProperty.Register("Node", typeof(MockRequirementWrapper), ty

我可能做错了。。。跟我一起走吧

我正在使用用户可以绑定的属性创建一个用户控件。在属性的setter中,我将PropertyChanged侦听器绑定到属性,以便对其状态的更改做出反应。此用户控件的隐藏代码如下所示:

        public static readonly DependencyProperty NodeProperty =
        DependencyProperty.Register("Node", typeof(MockRequirementWrapper), typeof(RecNode2));
    public MockRequirementWrapper Node
    {
        get
        {
            return (MockRequirementWrapper)GetValue(NodeProperty);
        }
        set
        {
            if(Node != null)
                Node.PropertyChanged -= Update;
            SetValue(NodeProperty, value);
            Node.PropertyChanged += new PropertyChangedEventHandler(Update);
            OnPropertyChanged(this, "Node");
        }
    }
<local:RecNode2 Node="{Binding}"/>
然后,在另一个用户控件中,我将在其他地方创建的节点绑定到此属性,如下所示:

        public static readonly DependencyProperty NodeProperty =
        DependencyProperty.Register("Node", typeof(MockRequirementWrapper), typeof(RecNode2));
    public MockRequirementWrapper Node
    {
        get
        {
            return (MockRequirementWrapper)GetValue(NodeProperty);
        }
        set
        {
            if(Node != null)
                Node.PropertyChanged -= Update;
            SetValue(NodeProperty, value);
            Node.PropertyChanged += new PropertyChangedEventHandler(Update);
            OnPropertyChanged(this, "Node");
        }
    }
<local:RecNode2 Node="{Binding}"/>


我发现recnode存在并且绑定到一个节点。。。但是如果我在setter中设置断点,它就永远不会被调用。我是否误解了装订的工作原理?当节点发生变化时,如何添加侦听器?

框架将始终直接调用GetValue和SetValue,该属性只是为了方便起见,不应包含除这些调用之外的逻辑。 如果要对更改执行某些操作,请在注册DependencyProperty时在元数据中注册PropertyChangedCallback

摘自: