在自定义控件中设置模板零件的值

时间:2013-11-06 10:16:31

标签: c# wpf wpf-controls

我在WPF中有一个自定义控件继承自Control,控件的目的是显示其父级的高度和宽度以及位置。

所以我的控件有两个TemplatePart

1. [TemplatePart(Name = "LocationBox", Type = typeof(TextBlock))]
2. [TemplatePart(Name = "DimensionBox", Type = typeof(TextBlock))]

我使用OnApplyTemplate方法获取这些部分,但不确定我应该在哪里设置值,即ArrangeOverride / MeasureOverride是设置值的适当方法吗?

注意。我有通过可视化树帮助器获取父元素的代码,因此获取父元素的位置或维度不是问题

1 个答案:

答案 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;
}