wpf 查找Control Template内部控件

        <DataGrid Name="DataGrid1" HorizontalAlignment="Left" Height="200" Margin="69,200,0,0" VerticalAlignment="Top" Width="500" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="序号"  Binding="{Binding Value1}"></DataGridTextColumn>
                <DataGridTextColumn Header="值"  Binding="{Binding Value2}"></DataGridTextColumn>
                <DataGridTemplateColumn Header="操作状态" Width="120*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
                                <Label Name="Label1" Content="Label"/>
                                <Button Content="开始下载" Name="Bianji" Tag="{Binding Value1}" Click="Button1_Click" />
                                <Button Content="停止下载" Name="Shangchu" Tag="{Binding Value1}" Click="Button2_Click" Foreground="#FFE01919" />
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
        private void Button1_Click(object sender, RoutedEventArgs e)
        {
            Button b = (Button)sender;
            int index = DataGrid1.SelectedIndex;
            object ww = DataGrid1.SelectedItem;

            StackPanel sp = b.Parent as StackPanel;
            Label tb = sp.FindName("Label1") as Label;


        }

    <Window x:Class="WpfApp5.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp5"
            xmlns:arr="clr-namespace:System.Collections;assembly=mscorlib"
            xmlns:sys="clr-namespace:System;assembly=mscorlib"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Window.Resources>
            <ControlTemplate x:Key="Temp">
                <StackPanel Background="Yellow">
                    <TextBox x:Name="txt1"/>
                    <TextBox x:Name="txt2"/>
                    <TextBox x:Name="txt3"/>
                </StackPanel>
               
            </ControlTemplate>
        </Window.Resources>
     
     
        <StackPanel >
            <UserControl x:Name="uc" Template="{StaticResource Temp}"></UserControl>
            <Button x:Name="btn" Content="btn" Click="Btn_Click"/>
        </StackPanel>
    </Window>

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
     
    namespace WpfApp5
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
     
            private void Btn_Click(object sender, RoutedEventArgs e)
            {
                TextBox tb = this.uc.Template.FindName("txt1", this.uc) as TextBox;
                tb.Text = "Hello,wpf";
                StackPanel sp = tb.Parent as StackPanel;
                (sp.Children[1] as TextBox).Text = "Hello control template";
                (sp.Children[2] as TextBox).Text = "I can find you";
     
            }
        }
    }

原文地址:https://www.cnblogs.com/cuihongyu3503319/p/15149039.html