我在WPF中有一个自定义控件继承自Control
,控件的目的是显示其父级的高度和宽度以及位置。
所以我的控件有两个TemplatePart
1. [TemplatePart(Name = "LocationBox", Type = typeof(TextBlock))]
2. [TemplatePart(Name = "DimensionBox", Type = typeof(TextBlock))]
我使用OnApplyTemplate
方法获取这些部分,但不确定我应该在哪里设置值,即ArrangeOverride
/ MeasureOverride
是设置值的适当方法吗?
注意。我有通过可视化树帮助器获取父元素的代码,因此获取父元素的位置或维度不是问题
答案 0 :(得分:1)
如果您可以访问OnApplyTemplate
处理程序方法中的父元素,那么这将是一个添加您将为父控件监视的处理程序的好地方。然后,您可以在更改父级的相关属性时从这些处理程序方法更新CustomControl DependencyProperty
。例如:
public override void OnApplyTemplate()
{
// Get access to parent control here, then
parentControl.SizeChanged += Parent_SizeChanged;
}
public void Parent_SizeChanged(object sender, SizeChangedEventArgs e)
{
Dimension = e.NewSize;
}