この例では、 FindName メソッドを使用して、 Name 値で要素を検索する方法について説明します。
例
この例では、特定の要素を名前で検索するメソッドが、ボタンのイベント ハンドラーとして書き込まれます。
stackPanelは検索対象のルート NameのFrameworkElementです。この例のメソッドは、見つかった要素を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 名前スコープ」を参照してください。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET Desktop feedback