我在阅读代码时发现了这个问题。搜索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个静态函数。为什么?
最佳答案
这是因为RegisterAttached和相关的静态方法用于注册attached properties(如Canvas.Left
),它们在一个类中定义,但是可以在任何其他类的实例上设置(源自DependencyObject)。例如,您可以使用以下代码在Button上设置Canvas.Left
:
Canvas.SetLeft(button, 100);
由于无法将
Left
属性添加到Button类,因此需要静态设置方法。关于c# - DependencyProperty的RegisterAttached()和Register()中的不同行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9391783/