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