Procedura: trovare elementi generati da un oggetto ControlTemplateHow to: Find ControlTemplate-Generated Elements

In questo esempio viene illustrato come trovare gli elementi che vengono generati da un ControlTemplate.This example shows how to find elements that are generated by a ControlTemplate.

EsempioExample

Nell'esempio seguente viene illustrato uno stile che consente di creare una semplice ControlTemplate per la Button classe: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>

Per trovare un elemento all'interno del modello dopo che è stato applicato il modello, è possibile chiamare il FindName metodo il Template.To find an element within the template after the template has been applied, you can call the FindName method of the Template. L'esempio seguente crea una finestra di messaggio che indica il valore di larghezza effettiva del Grid all'interno del modello di controllo: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())

Vedere ancheSee Also

Procedura: trovare elementi generati da un oggetto DataTemplateFind DataTemplate-Generated Elements
Applicazione di stili e modelliStyling and Templating
Ambiti dei nomi XAML WPFWPF XAML Namescopes
Strutture ad albero in WPFTrees in WPF