簡體   English   中英

如何從DataTemplate和ControlTemplate獲取控件? 這么想

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM