Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到依赖项属性_C#_Wpf_Xaml_Binding - Fatal编程技术网

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
回调