Share via


Cómo: Buscar elementos generados por un objeto ControlTemplate

Actualización: noviembre 2007

En este ejemplo se muestra cómo buscar elementos generados por un objeto ControlTemplate.

Ejemplo

En el ejemplo siguiente se muestra un estilo que crea un objeto ControlTemplate simple para la clase Button:

<Style TargetType="{x:Type Button}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Button}">
        <Grid Margin="5" Name="grid">
          <Ellipse Stroke="DarkBlue" StrokeThickness="2">
            <Ellipse.Fill>
              <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                <GradientStop Color="Azure" Offset="0.1" />
                <GradientStop Color="CornflowerBlue" Offset="1.1" />
              </RadialGradientBrush>
            </Ellipse.Fill>
          </Ellipse>
          <ContentPresenter Name="content" Margin="10"
                            HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Para buscar un elemento dentro de la plantilla una vez aplicada, puede llamar al método FindName de Template. En el ejemplo siguiente se crea un cuadro de mensaje que muestra el valor de ancho real de Grid dentro de la plantilla de control:

// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);

// Do something to the ControlTemplate-generated grid
MessageBox.Show("The actual width of the grid in the ControlTemplate: "
    + gridInTemplate.GetValue(Grid.ActualWidthProperty).ToString());

Para obtener el ejemplo completo, vea Ejemplo Finding Template-Generated Elements.

Vea también

Tareas

Cómo: Buscar elementos generados por un objeto DataTemplate

Conceptos

Aplicar estilos y plantillas

Ámbitos de nombres de WPF

Árboles en WPF