Gewusst wie: Suchen von Elementen, die mit einer ControlTemplate generiert wurden

In diesem Beispiel wird gezeigt, wie Sie nach Elementen suchen, die von einer ControlTemplate generiert wurden.

Beispiel

Im folgenden Beispiel wird ein Stil veranschaulicht, der eine einfache ControlTemplate für die Button-Klasse erstellt:

<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>

Um ein Element in der Vorlage zu suchen, nachdem die Vorlage angewendet wurde, können Sie die FindName-Methode von der Template aufrufen. Im folgenden Beispiel wird ein Meldungsfeld erstellt, mit dem der tatsächliche Wert der Grid-Breite in der Steuerelementvorlage angezeigt wird:

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

Siehe auch

Aufgaben

Gewusst wie: Suchen von Elementen, die mit einer DataTemplate generiert wurden

Konzepte

Erstellen von Formaten und Vorlagen

WPF-XAML-Namescopes

Strukturen in WPF