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