我尝试了这个只是为了看看会发生什么并且它确实有效,但我不知道为什么会这样。有人可以解释一下背景中发生了什么DependencyProperties
吗?
我有一个声明 a 的类,DependencyProperty
然后在另一个类中我DependencyProperty
使用GetValue
and来定位它SetValue
。
这是一个例子:
public class DependencyProperties : DependencyObject
{
public Size EstimatedSize
{
get { return (Size)GetValue(EstimatedSizeProperty); }
set { SetValue(EstimatedSizeProperty, value); }
}
public static readonly DependencyProperty EstimatedSizeProperty =
DependencyProperty.Register("EstimatedSize", typeof(Size), typeof(DependencyProperties), null);
}
public class MyControl: ContentControl
{
public Size CalculatedSize
{
get { return (Size)GetValue(DependencyProperties.EstimatedSizeProperty); }
set { SetValue(DependencyProperties.EstimatedSizeProperty, value); }
}
protected override OnApplyTemplate()
{
// This works but why? How is it possible to do this? What is happening under the hood?
this.CalculatedSize = new Size(123, 123);
}
}
为什么可以做到这一点?这个例子的背景发生了什么?MyControl 类没有注册 DP,但它可以使用它。有人可以告诉我引擎盖下发生了什么吗?