我有一个以这种方式定义为依赖属性的属性:
public static readonly DependencyProperty HandleProperty =
DependencyProperty.Register("Handle", typeof(Int32?), typeof(SearchTextBox), new PropertyMetadata(HandleChangedHandler));
public Int32? Handle
{
get { return (Int32?)GetValue(HandleProperty); }
set
{
SetValue(HandleProperty, value);
}
}
public static void HandleChangedHandler(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var self = (SearchTextBox) sender;
self.FindByHandle((Int32)e.NewValue);
}
使用此代码,行
SetValue(HandleProperty, value);
永远不会执行,但会更改Handle属性。
此属性的值是否已设置?
为什么不简单地使用属性设置器来执行此操作?
答案 0 :(得分:2)
here可以找到所有问题的答案。我将在这里引用它的部分内容:
其XAML处理器的当前WPF实现本质上是 依赖属性意识到。 WPF XAML处理器使用属性系统 加载二进制XAML和时的依赖属性的方法 处理属性是依赖属性。这有效 绕过属性包装器。实现自定义依赖项时 属性,你必须考虑到这种行为,应该避免 将任何其他代码放在属性包装器中除了 属性系统方法GetValue和SetValue。