2014-09-30 63 views
1

我有一个依赖属性:结合依赖属性魔法

public bool IsApproved //Dependency property 
{ 
    get { return (bool)GetValue(IsApprovedProperty); } 
    set { SetValue(IsApprovedProperty, value); } 
} 

public static readonly DependencyProperty IsApprovedProperty = 
    DependencyProperty.Register("IsApproved", typeof(bool), typeof(MyClass), new UIPropertyMetadata(true)); 

而且2控件绑定到这个属性:

当我检查/取消选中该复选框的mypanel的可见性的变化和它的确定。 但是,当我将断点放入IsApproved的get和set时,它永远不会停在那里。

它是如何工作的?

感谢

回答

1

的WPF的数据绑定系统直接通过SetValue()修改DependencyProperties,不通过你的财产setter方法去(这实际上并不需要存在)。

要查看更改,请在UIPropertyMetadata中添加回调。

4

MSDN

因为对于属性设置当前WPF实现XAML处理器行为 的绕过包装完全,你不应该 提出任何额外的逻辑到包装的集定义为 您自定义依赖项属性。如果在定义集 中放入这样的逻辑,那么当在XAML中设置属性 而不是在代码中时,逻辑将不会执行。

换句话说,框架不使用CLR包装器属性。如果直接通过代码设置CLR属性,那么set逻辑当然会运行。要检测对该属性的框架更改,您需要在注册期间使用元数据属性注册PropertyChanged回调。