依赖属性和回调

时间:2014-02-10 19:25:38

标签: c# wpf

我有一个以这种方式定义为依赖属性的属性:

    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属性。

此属性的值是否已设置?

为什么不简单地使用属性设置器来执行此操作?

1 个答案:

答案 0 :(得分:2)

here可以找到所有问题的答案。我将在这里引用它的部分内容:

  

其XAML处理器的当前WPF实现本质上是   依赖属性意识到。 WPF XAML处理器使用属性系统   加载二进制XAML和时的依赖属性的方法   处理属性是依赖属性。这有效   绕过属性包装器。实现自定义依赖项时   属性,你必须考虑到这种行为,应该避免   将任何其他代码放在属性包装器中除了   属性系统方法GetValue和SetValue。