次の方法で共有


方法: 名前で要素を検索する

この例では、 FindName メソッドを使用して、 Name 値で要素を検索する方法について説明します。

この例では、特定の要素を名前で検索するメソッドが、ボタンのイベント ハンドラーとして書き込まれます。 stackPanelは検索対象のルート NameFrameworkElementです。この例のメソッドは、見つかった要素をTextBlockとしてキャストし、TextBlock表示される UI プロパティの 1 つを変更することによって、見つかった要素を視覚的に示します。

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 名前スコープ」を参照してください。