在WPF中,TemplatedParent是什么?

41
我正在尝试理解RelativeSource绑定,但是我找不到TemplatedParent的定义。MSDN说:

"获取一个静态值,用于返回使用TemplatedParent模式构造的RelativeSource。"

它在“Windows Presentation Foundation Unleashed”的索引中没有出现。
简单来说,TemplatedParent是什么意思?

请参见https://dev59.com/pHNA5IYBdhLWcg3wAIzd。 - Lynn Crumbling
3个回答

44

TemplatedParent 指的是模板应用于的 Control 实例。您可以使用 TemplatedParent 来绑定到在该对象(及其基类)上声明的属性。


6
如果我有一个在ItemsControl的DataTemplate中的StackPanel内部的TextBox,那么TextBox的TemplatedParent将是ItemsControl而不是StackPanel吗? - David Smith
2
@David:在ItemsControl中,一个项的TemplatedParent既不是你想象中的任何一个。我认为它是一个ContentPresenter实例(对于ItemsSource中的每个项都有一个单独的实例)。 - Gabe
嗯,谢谢 Gabe,但我觉得我又迷失了。ContentPresenter 不在 "WPF Unleashed" 的索引中,我需要再做一些搜索... - David Smith
5
@David:请查看http://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter.aspx获取所有详细信息。 - Gabe
嗨,感谢这个解释。我只是想知道 {RelativeSource Self} 有什么不同? - PlaTyPuS

8
在WPF中,模板是用于构建类型树的内容。当创建该类型的新对象时,WPF会复制该模板。
因此,在模板内部,如果要引用新对象,则可以使用TemplatedParent进行快速访问。否则,您将不得不使用RelativeSource向上遍历树以查找父对象。

-1

注意:

TemplatedParent 意味着父元素是模板化的。"Templated" 是英语中的被动语态。换句话说,父元素应用了一个模板。因此,在模板中,您可以轻松地绑定父元素的属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接