如何:按元素名称查找元素

此示例介绍如何使用 FindName 该方法按其 Name 值查找元素。

示例:

在此示例中,按其名称查找特定元素的方法将编写为按钮的事件处理程序。 stackPanel 是正在搜索的根 NameFrameworkElement,然后示例方法通过将该元素强制转换为 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 后以编程方式将元素添加到对象树,则元素 Namex:Name 值不会在 XAML 名称范围中自动注册。 在将动态添加的元素添加到父容器之前,请在 XAML 名称范围(通常是页面或窗口根)上调用 RegisterName 以便按名称查找元素。 有关详细信息,请参阅 XAML 名称范围