[英]How to get Control from DataTemplate and ControlTemplate ? thinks so much
當我在DataTemplate中定義控件時,如何獲取該控件的引用?
如果控件在ControlTemplate中為Style,如何獲取?
相反,您應該告訴我們為什么需要引用模板內的控件。
考慮到控件將被多次渲染,因此獲取單個引用根本沒有任何意義。
最常見的方法是通過x:Name="MyElementName"
為要定位的元素x:Name="MyElementName"
,然后可以使用FindName方法定位names元素。 如果在ItemsControl
中使用您的DataTemplate
來呈現yoru XAML標記的多個副本,那么顯然會有許多共享相同名稱的元素。 因此,有一個稱為XAML namescope的概念,您應該仔細閱讀以了解所提供名稱的范圍。
如果您需要一種更通用的方法來搜索視覺樹中的元素,請嘗試使用Linq-to-VisualTree ,您可以使用它來查詢您的UI,例如:
var itemsFluent = this.Descendants<TextBox>()
.Where(i => i.Ancestors().FirstOrDefault() is Grid);
上面的查詢將找到所有具有Grid
作為直接父級的TextBoxs
。
最后,如果您可以通過使用數據綁定或事件冒泡來避免執行任何上述操作,那么請這樣做! 這要容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.