Condividi tramite


Procedura: trovare elementi generati da un oggetto ControlTemplate

In questo esempio viene illustrato come trovare elementi generati da ControlTemplate.

Esempio

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

Per trovare un elemento all'interno del modello, una volta applicato il modello stesso, è possibile chiamare il metodo FindName di Template. Nell'esempio seguente viene creata una finestra di messaggio in cui viene indicato il valore della larghezza effettiva dell'oggetto Grid all'interno del modello di controllo:

            ' 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())
// 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());

Vedere anche

Attività

Procedura: trovare elementi generati da un oggetto DataTemplate

Concetti

Applicazione di stili e modelli

NameScope XAML WPF

Strutture ad albero in WPF