C# 绑定到依赖项属性
我有一个依赖属性:C# 绑定到依赖项属性,c#,wpf,xaml,binding,C#,Wpf,Xaml,Binding,我有一个依赖属性: public bool IsApproved //Dependency property { get { return (bool)GetValue(IsApprovedProperty); } set { SetValue(IsApprovedProperty, value); } } public static readonly DependencyProperty IsApprovedProperty = DependencyProperty.
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的可见性会发生变化,并且是ok。
但是,当我在get中设置断点,并且设置为IsApproved时,它从未停止过
它是如何工作的
感谢WPF数据绑定系统直接通过
SetValue()
修改DependencyProperties,而不需要通过属性设置程序(实际上不需要存在)
要查看更改,请在
UIPropertyMetadata
中添加回调。WPF数据绑定系统直接通过SetValue()
修改DependencyProperties,而无需通过属性设置器(实际上不需要存在)
要查看更改,请在以下位置的UIPropertyMetadata
中添加回调:
因为当前WPF实现的XAML处理器行为
因为属性设置完全绕过包装器,所以不应该
将任何附加逻辑放入包装器的集合定义中
您的自定义依赖项属性。如果你把这样的逻辑放在集合中
定义,则当属性为
在XAML中设置,而不是在代码中设置
换句话说,框架不使用CLR包装器属性。如果您通过代码直接设置CLR属性,则设置
逻辑当然会运行。要检测对属性的框架更改,您需要在注册期间使用元数据属性注册一个PropertyChanged
回调。来自:
因为当前WPF实现的XAML处理器行为
因为属性设置完全绕过包装器,所以不应该
将任何附加逻辑放入包装器的集合定义中
您的自定义依赖项属性。如果你把这样的逻辑放在集合中
定义,则当属性为
在XAML中设置,而不是在代码中设置
换句话说,框架不使用CLR包装器属性。如果您通过代码直接设置CLR属性,则设置
逻辑当然会运行。要检测对属性的框架更改,需要在注册期间使用元数据属性注册PropertyChanged
回调