Search for an element by using Panel.FindName()

image_pdfimage_print


   
  

<StackPanel Name="root"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="WpfApplication1.FEFindName">
  <StackPanel.Resources>
      <Style TargetType="{x:Type Button}">
        <Setter Property="Height" Value="20"/>
        <Setter Property="Width" Value="250"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
      </Style>
      <Style TargetType="{x:Type TextBlock}">
        <Setter Property="HorizontalAlignment" Value="Left"/>
        <Setter Property="FontSize" Value="20"/>
      </Style>
  </StackPanel.Resources>
  <Button Click="Find">Find element with the ID "dog" and change color</Button>
  <StackPanel Name="stackPanel">
    <TextBlock Name="cat">Cat</TextBlock>
    <TextBlock Name="dog">Dog</TextBlock>
    <TextBlock Name="fish">Fish</TextBlock>    
  </StackPanel>
</StackPanel>
//File:Window.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class FEFindName {
        void Find(object sender, RoutedEventArgs e)
        {
            object wantedNode = stackPanel.FindName("dog");
            if (wantedNode is TextBlock)
            {
                TextBlock wantedChild = wantedNode as TextBlock;
                wantedChild.Foreground = Brushes.Blue;
            }
        }
    }
}