Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
ControlTemplate-Klasse
Gibt die visuelle Struktur und Verhaltensaspekte eines Control an, das für mehrere Instanzen des Steuerelements gemeinsam verwendet werden kann.
System.Windows.Threading.DispatcherObject
System.Windows.FrameworkTemplate
System.Windows.Controls.ControlTemplate
Assembly: PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
[DictionaryKeyPropertyAttribute("TargetType")] [LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)] public class ControlTemplate : FrameworkTemplate
<ControlTemplate> <VisualTreeRootNode> VisualTreeNodeContents </VisualTreeRootNode> </ControlTemplate>
XAML-Werte
Der ControlTemplate-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
ControlTemplate() | Initialisiert eine neue Instanz der ControlTemplate-Klasse. |
|
ControlTemplate(Type) | Initialisiert eine neue Instanz der ControlTemplate-Klasse mit dem angegebenen Zieltyp. |
| Name | Beschreibung | |
|---|---|---|
|
Dispatcher | Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist. (Von DispatcherObject geerbt.) |
|
HasContent | Ruft einen Wert ab, der angibt, ob diese Vorlage optimierten Inhalt aufweist. (Von FrameworkTemplate geerbt.) |
|
IsSealed | Ruft einen Wert ab, der angibt, ob sich dieses Objekt in einem unveränderlichen Zustand befindet. (Von FrameworkTemplate geerbt.) |
|
Resources | Ruft die Auflistung von Ressourcen ab, die innerhalb des Bereichs dieser Vorlage verwendet werden können, oder legt sie fest. (Von FrameworkTemplate geerbt.) |
|
TargetType | Ruft den Typ ab, für den dieses ControlTemplate vorgesehen ist, oder legt diesen fest. |
|
Template | Ruft einen Verweis auf das Objekt ab, das die XAML-Knoten für die Vorlage aufzeichnet oder wiedergibt, wenn die Vorlage von einem Writer definiert oder angewendet wird, oder legt diesen Verweis fest. (Von FrameworkTemplate geerbt.) |
|
Triggers | Ruft eine Auflistung von TriggerBase-Objekten ab, die Eigenschaftenänderungen anwenden oder in Abhängigkeit von festgelegten Bedingungen Aktionen durchführen. |
|
VisualTree | Ruft den Stammknoten der Vorlage ab oder legt diesen fest. (Von FrameworkTemplate geerbt.) |
| Name | Beschreibung | |
|---|---|---|
|
CheckAccess | Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann. (Von DispatcherObject geerbt.) |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.) |
|
FindName | Sucht das Element, das mit dem angegebenen, in der Vorlage definierten Namen verknüpft ist. (Von FrameworkTemplate geerbt.) |
|
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
LoadContent | Lädt den Inhalt der Vorlage als Instanz eines Objekts und gibt das Stammelement des Inhalts zurück. (Von FrameworkTemplate geerbt.) |
|
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
RegisterName | Registriert ein neues Name/Objekt-Paar im aktuellen Namescope. (Von FrameworkTemplate geerbt.) |
|
Seal | Sperrt die Vorlage, damit diese nicht geändert werden kann. (Von FrameworkTemplate geerbt.) |
|
ShouldSerializeResources | Gibt einen Wert zurück, mit dem angegeben wird, ob Serialisierungsprozesse den Wert der Resources-Eigenschaft für Instanzen dieser Klasse serialisieren sollen. (Von FrameworkTemplate geerbt.) |
|
ShouldSerializeVisualTree | Gibt einen Wert zurück, mit dem angegeben wird, ob Serialisierungsprozesse den Wert der VisualTree-Eigenschaft für Instanzen dieser Klasse serialisieren sollen. (Von FrameworkTemplate geerbt.) |
|
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
|
UnregisterName | Entfernt eine Name/Objekt-Zuordnung aus dem XAML-Namescope. (Von FrameworkTemplate geerbt.) |
|
ValidateTemplatedParent | Vergleicht das auf Vorlagen basierende übergeordnete Element mit einer Reihe von Regeln. (Überschreibt FrameworkTemplate.ValidateTemplatedParent(FrameworkElement).) |
|
VerifyAccess | Erzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann. (Von DispatcherObject geerbt.) |
| Name | Beschreibung | |
|---|---|---|
|
INameScope.FindName | Infrastruktur. Gibt ein Objekt zurück, das den bereitgestellten kennzeichnenden Namen aufweist. (Von FrameworkTemplate geerbt.) |
|
IQueryAmbient.IsAmbientPropertyAvailable | Fragt ab, ob eine angegebene Ambient-Eigenschaft im aktuellen Bereich verfügbar ist. (Von FrameworkTemplate geerbt.) |
Mit dem ControlTemplate können Sie die visuelle Struktur eines Steuerelements angeben. Der Steuerelemententwickler kann das standardmäßige ControlTemplate definieren, und der Anwendungsentwickler kann das ControlTemplate überschreiben, um die visuelle Struktur des Steuerelements wiederherzustellen.
Steuerelementvorlagen sind eines der vielen Features, das vom WPF-Formatierungs- und Vorlagenmodell verfügbar gemacht wird. Das Formatierungs- und Vorlagenmodell bietet Ihnen solch ein hohes Maß an Flexibilität, dass Sie in vielen Fällen keine eigenen Steuerelemente schreiben müssen. Wenn Sie als Anwendungsentwickler die Darstellung des Steuerelements ändern oder das ControlTemplate eines vorhandenen Steuerelements ersetzen möchten, finden Sie im Thema Erstellen von Formaten und Vorlagen Beispiele sowie eine ausführliche Erläuterung.
Weitere Informationen zum Schreiben eigener Steuerelemente finden Sie in Übersicht über das Erstellen von Steuerelementen unter "Erstellen eines benutzerdefinierten Steuerelements".
Ein ControlTemplate sollte eine unabhängige Einheit der Implementierung sein, die für externe Benutzer und Objekte und auch für Formate nicht sichtbar ist. Der Inhalt der Steuerelementvorlage kann nur in derselben Steuerelementvorlage geändert werden.
Im Folgenden wird ein Button-Style veranschaulicht, der das ControlTemplate eines Button festlegt:
<Style TargetType="Button"> <!--Set to true to not get any properties from the themes.--> <Setter Property="OverridesDefaultStyle" Value="True"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid> <Ellipse Fill="{TemplateBinding Background}"/> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
Wenn dies zur Anwendung kommt, wird Button als Ellipse angezeigt:
Wenn Sie die Template-Eigenschaft eines Control (wie im obigen Beispiel) auf ein neues ControlTemplate festlegen, wird die gesamte Vorlage ersetzt. Das Aussehen des Button, wenn er den Fokus besitzt oder gedrückt wird, gehört zur Standarddarstellung der Schaltfläche, die ersetzt wird. Daher empfiehlt es sich ggf. das Aussehen der Schaltfläche im gedrückten Zustand usw. in die Definition aufzunehmen, wie im folgenden Beispiel veranschaulicht:
<Style TargetType="Button"> <Setter Property="SnapsToDevicePixels" Value="true" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}" /> <Setter Property="MinHeight" Value="23" /> <Setter Property="MinWidth" Value="75" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border TextBlock.Foreground="{TemplateBinding Foreground}" x:Name="Border" CornerRadius="2" BorderThickness="1"> <Border.BorderBrush> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Color="{DynamicResource BorderLightColor}" Offset="0.0" /> <GradientStop Color="{DynamicResource BorderDarkColor}" Offset="1.0" /> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Border.BorderBrush> <Border.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="{DynamicResource ControlLightColor}" Offset="0" /> <GradientStop Color="{DynamicResource ControlMediumColor}" Offset="1" /> </LinearGradientBrush> </Border.Background> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0:0:0.5" /> <VisualTransition GeneratedDuration="0" To="Pressed" /> </VisualStateGroup.Transitions> <VisualState x:Name="Normal" /> <VisualState x:Name="MouseOver"> <Storyboard> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background). (GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource ControlMouseOverColor}" /> </ColorAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="Pressed"> <Storyboard> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background). (GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource ControlPressedColor}" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush). (GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource PressedBorderDarkColor}" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush). (GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource PressedBorderLightColor}" /> </ColorAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="Disabled"> <Storyboard> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background). (GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource DisabledControlDarkColor}" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource DisabledForegroundColor}" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush). (GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Border"> <EasingColorKeyFrame KeyTime="0" Value="{StaticResource DisabledBorderDarkColor}" /> </ColorAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True" /> </Border> <ControlTemplate.Triggers> <Trigger Property="IsDefault" Value="true"> <Setter TargetName="Border" Property="BorderBrush"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientBrush.GradientStops> <GradientStopCollection> <GradientStop Color="{DynamicResource DefaultBorderBrushLightBrush}" Offset="0.0" /> <GradientStop Color="{DynamicResource DefaultBorderBrushDarkColor}" Offset="1.0" /> </GradientStopCollection> </GradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
Beachten Sie, dass in diesem Beispiel auf Ressourcen verwiesen wird, die hier nicht angezeigt werden. Das vollständige Beispiel finden Sie unter Styling with ControlTemplates Sample. Im Folgenden finden Sie Beispiele für Steuerelementvorlagen für viele Steuerelemente. Diese empfehlen sich als Einstieg in das Erstellen von Steuerelementvorlagen.
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.