Procedimiento para buscar elementos generados por un objeto ControlTemplateHow to: Find ControlTemplate-Generated Elements

En este ejemplo se muestra cómo buscar elementos generados por un ControlTemplate.This example shows how to find elements that are generated by a ControlTemplate.

EjemploExample

El ejemplo siguiente muestra un estilo que se crea un simple ControlTemplate para el Button clase:The following example shows a style that creates a simple ControlTemplate for the Button class:

<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 se haya aplicado la plantilla, puede llamar a la FindName método de la Template.To find an element within the template after the template has been applied, you can call the FindName method of the Template. En el ejemplo siguiente se crea un cuadro de mensaje que muestra el valor de ancho real de la Grid dentro de la plantilla de control:The following example creates a message box that shows the actual width value of the Grid within the control template:

// 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());
' Finding the grid that is generated by the ControlTemplate of the Button
Dim gridInTemplate As Grid = CType(myButton1.Template.FindName("grid", myButton1), Grid)

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

Vea tambiénSee also