GetTemplateChild始终返回null

时间:2011-01-24 19:05:23

标签: wpf wpf-controls

我正在使用GetTemplateChild,但它总是返回NULL。如何解决这个问题?

[TemplatePart(Name = "textPoints", Type = typeof(TextBlock))]
textPoints = (TextBlock)GetTemplateChild("TextBlock");

2 个答案:

答案 0 :(得分:4)

GetTemplateChild名称作为参数,而不是类型。由于您的XAML定义为:

<TextBlock Text="{Binding}" Foreground="Cyan" 
    x:Name="textPoints"

尝试传递"textPoints"而不是"TextBlock"作为要检索的名称:

[TemplatePart(Name = "textPoints", Type = typeof(TextBlock))]
textPoints = (TextBlock)GetTemplateChild("textPoints");

答案 1 :(得分:2)

看起来你正试图从你调用GetTemplateChild的地方获取一些其他控件的模板子项?

如果您的ItemsControl在某个UserControl中,那么GetTemplateChild将无法工作,因为您的UserControl的子项无论如何都不是模板子项的一部分,并且它不会递归搜索每个子项的模板子项。

大多数GetTemplateChild用于自定义控件。