DependencyProperty';中的不同行为;s RegisterAttached()和Register(

本文关键字:RegisterAttached Register DependencyProperty | 更新日期: 2023-09-27 18:25:19

我在阅读代码时发现了这个问题。搜索MSDN后,它也出现了同样的问题。

http://msdn.microsoft.com/en-us/library/ms597501.aspx对于DependencyProperty.Register方法,它有如下代码示例:

public static readonly DependencyProperty CurrentReadingProperty = DependencyProperty.Register(...);
public double CurrentReading
{
  get { return (double)GetValue(CurrentReadingProperty); }
  set { SetValue(CurrentReadingProperty, value); }
}

对于RegisterAttached方法http://msdn.microsoft.com/en-us/library/ms597496.aspx,它有类似的代码示例:

public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(....);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
    element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
    return (Boolean)element.GetValue(IsBubbleSourceProperty);
}

我的问题是,RegisterAttached不使用属性格式,而是使用2个静态函数。为什么?

DependencyProperty';中的不同行为;s RegisterAttached()和Register(

这是因为RegisterAttached和相关的静态方法用于注册附加的属性,如Canvas.Left,这些属性在一个类中定义,但可以在任何其他类的实例上设置(从DependencyObject派生)。例如,您可以在按钮上设置Canvas.Left,代码如下:

Canvas.SetLeft(button, 100);

由于无法将Left属性添加到类Button,因此需要一个静态集合方法。

相关文章:
  • 没有找到相关文章