此示例介绍如何使用 FindName 该方法按其 Name 值查找元素。
示例:
在此示例中,按其名称查找特定元素的方法将编写为按钮的事件处理程序。
stackPanel 是正在搜索的根 Name 的 FrameworkElement,然后示例方法通过将该元素强制转换为 TextBlock,并更改其中一个 UI 可见属性,从而直观地指示出找到的 TextBlock 元素。
void Find(object sender, RoutedEventArgs e)
{
object wantedNode = stackPanel.FindName("dog");
if (wantedNode is TextBlock)
{
// Following executed if Text element was found.
TextBlock wantedChild = wantedNode as TextBlock;
wantedChild.Foreground = Brushes.Blue;
}
}
Private Sub Find(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim wantedNode As Object = stackPanel.FindName("dog")
If TypeOf wantedNode Is TextBlock Then
' Following executed if Text element was found.
Dim wantedChild As TextBlock = TryCast(wantedNode, TextBlock)
wantedChild.Foreground = Brushes.Blue
End If
End Sub
注释
该方法 FindName 仅查找属于 XAML 名称范围一部分的元素。 如果在加载 XAML 后以编程方式将元素添加到对象树,则元素 Name 或 x:Name 值不会在 XAML 名称范围中自动注册。 在将动态添加的元素添加到父容器之前,请在 XAML 名称范围(通常是页面或窗口根)上调用 RegisterName 以便按名称查找元素。 有关详细信息,请参阅 XAML 名称范围。