当我在DataTemplate中定义一个控件时,如何获取该控件的引用?
如果控件在ControlTemplate中,如何获取?
答案 0 :(得分:0)
您应该告诉我们为什么需要在模板中引用控件。
考虑控件将被多次渲染,因此获得单个引用确实没有任何意义。
答案 1 :(得分:0)
最常见的方法是命名'您希望通过x:Name="MyElementName"
找到的元素,然后可以使用FindName方法找到names元素。如果在DataTemplate
中使用ItemsControl
来呈现yoru XAML标记的多个副本,那么显然会有许多共享同一名称的元素。出于这个原因,有一个称为XAML namescope的概念,您应该阅读此内容以了解您提供的名称的范围。
如果您需要更通用的方法来搜索可视化树中的元素,请尝试Linq-to-VisualTree,您可以使用它来查询UI,例如:
var itemsFluent = this.Descendants<TextBox>()
.Where(i => i.Ancestors().FirstOrDefault() is Grid);
上述查询会找到所有TextBoxs
作为直接父级的Grid
。
最后,如果您可以通过使用数据绑定或事件冒泡来避免这样做,那么就这样做!它更容易。