Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

ControlTemplate-Klasse

 

Veröffentlicht: Oktober 2016

Gibt die visuelle Struktur und das Verhalten Aspekte einer Control können über mehrere Instanzen des Steuerelements gemeinsam genutzt werden.

Namespace:   System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.FrameworkTemplate
      System.Windows.Controls.ControlTemplate

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[DictionaryKeyPropertyAttribute("TargetType")]
public class ControlTemplate : FrameworkTemplate

NameBeschreibung
System_CAPS_pubmethodControlTemplate()

Initialisiert eine neue Instanz der ControlTemplate-Klasse.

System_CAPS_pubmethodControlTemplate(Type)

Initialisiert eine neue Instanz der ControlTemplate -Klasse mit den angegebenen Zieltyp.

NameBeschreibung
System_CAPS_pubpropertyDispatcher

Ruft die Dispatcher dies DispatcherObject zugeordnet ist.(Geerbt von „DispatcherObject“.)

System_CAPS_pubpropertyHasContent

Ruft einen Wert, der angibt, ob diese Vorlage optimierten Inhalt aufweist.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubpropertyIsSealed

Ruft einen Wert, der angibt, ob dieses Objekt in einem unveränderlichen Zustand ist, damit es nicht geändert werden kann.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubpropertyResources

Ruft ab die Auflistung von Ressourcen, die verwendet werden, können innerhalb des Bereichs dieser Vorlage.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubpropertyTargetType

Ruft ab oder legt den Typ fest, für die dieser ControlTemplate vorgesehen ist.

System_CAPS_pubpropertyTemplate

Ruft ab oder legt einen Verweis auf das Objekt, das aufzeichnet, oder gibt die XAML-Knoten für die Vorlage wieder, wenn die Vorlage definiert wird, oder von einem Schreiber angewendet.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubpropertyTriggers

Ruft eine Auflistung von TriggerBase -Objekten, die Eigenschaft ändern oder Ausführen von Aktionen, die basierend auf Bedingung angegeben.

System_CAPS_pubpropertyVisualTree

Ruft ab oder legt den Stammknoten der Vorlage.(Geerbt von „FrameworkTemplate“.)

NameBeschreibung
System_CAPS_pubmethodCheckAccess()

Bestimmt, ob der aufrufende Thread Zugriff auf diese DispatcherObject.(Geerbt von „DispatcherObject“.)

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „Object“.)

System_CAPS_pubmethodFindName(String, FrameworkElement)

Sucht das Element, das dem angegebenen Namen zugeordnet und in dieser Vorlage definiert ist.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodLoadContent()

Lädt den Inhalt der Vorlage als eine Instanz eines Objekts und gibt das Stammelement des Inhalts zurück.(Geerbt von „FrameworkTemplate“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodRegisterName(String, Object)

Registriert ein neues Name/Objekt-Paar im aktuellen Bereich für den Namen.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubmethodSeal()

Sperrt die Vorlage, damit es nicht geändert werden kann.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubmethodShouldSerializeResources(XamlDesignerSerializationManager)

Gibt einen Wert, der angibt, ob Serialisierungsprozesse den Wert der serialisieren sollen die Resources -Eigenschaft für Instanzen dieser Klasse.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubmethodShouldSerializeVisualTree()

Gibt einen Wert, der angibt, ob Serialisierungsprozesse den Wert der serialisieren sollen die VisualTree -Eigenschaft für Instanzen dieser Klasse.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

System_CAPS_pubmethodUnregisterName(String)

Entfernt eine Name/Objekt-Zuordnung aus dem XAML-Namensbereich.(Geerbt von „FrameworkTemplate“.)

System_CAPS_protmethodValidateTemplatedParent(FrameworkElement)

Überprüft die übergeordnete Vorlage anhand einer Reihe von Regeln.(Überschreibt FrameworkTemplate.ValidateTemplatedParent(FrameworkElement).)

System_CAPS_pubmethodVerifyAccess()

Erzwingt, dass der aufrufende Thread den Zugriff auf diese kann DispatcherObject.(Geerbt von „DispatcherObject“.)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethodINameScope.FindName(String)

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Gibt ein Objekt zurück, das über den bereitgestellten kennzeichnenden Namen verfügt.(Geerbt von „FrameworkTemplate“.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIQueryAmbient.IsAmbientPropertyAvailable(String)

Fragt ab, ob eine angegebene Ambiente-Eigenschaft im aktuellen Bereich verfügbar ist.(Geerbt von „FrameworkTemplate“.)

Die ControlTemplate ermöglicht es Ihnen, die visuelle Struktur eines Steuerelements angeben. Autor des Steuerelements kann die standardmäßige definieren ControlTemplate und der Anwendungsentwickler kann überschreiben die ControlTemplate um die visuelle Struktur des Steuerelements wiederherzustellen.

Steuerelementvorlagen ist eines der angebotenen viele Features der WPF von Formaten und Vorlagen-Modell. Das Modell von Formaten und Vorlagen können Sie solche flexibel, dass in vielen Fällen keine eigene Steuerelemente schreiben müssen. Wenn Sie ein Anwendungsentwickler, die die Darstellung des Steuerelements ändern oder ersetzen möchte der ControlTemplate eines vorhandenen Steuerelements, finden Sie unter der von Formaten und Vorlagen Thema Beispiele sowie eine ausführliche Erläuterung.

Wenn Sie ein eigenes Steuerelement schreiben, finden Sie in "Erstellen eines benutzerdefinierten Steuerelements" in der Übersicht über das Erstellen.

Ein ControlTemplate sollte eine unabhängige Einheit der Implementierung sein, die für externe Benutzer und Objekte, einschließlich Stile nicht sichtbar ist. Die einzige Möglichkeit zum Ändern des Inhalts der Steuerelementvorlage stammt in derselben Steuerelementvorlage.

<ControlTemplate>
  <VisualTreeRootNode>VisualTreeNodeContents
  </VisualTreeRootNode>
</ControlTemplate>

ControlTemplate

Objektelement für ControlTemplate oder eine abgeleitete Klasse.

VisualTreeRootNode

Eine einzelne XAML als unmittelbar untergeordnetes Element des Elements der ControlTemplate (oder eine abgeleitete Klasse). Vorlagen müssen einen einzelnen Stammknoten aufweisen. Um eine hilfreiche Vorlage, das als Element generieren VisualTreeRootNode wird erwartet, dass ein Inhaltsmodell eigenen häufig ein Modell unterstützen, die mehrere untergeordnete Elemente unterstützt.

VisualTreeNodeContents

Ein oder mehrere Elemente, die die gewünschte Vorlage abgeschlossen. Wenn das Element als VisualTreeRootNode unterstützt nur ein einzelnes untergeordnetes Element, es können nur ein Element als deklariert werden VisualTreeNodeContents. Es ist ebenfalls möglich (wenn auch ungewöhnlich) Textinhalt bereitzustellen, wenn die ausgewählte VisualTreeRootNode eine Eigenschaft unterstützt.

Im folgenden gezeigt eine Button Style festlegt, die die ControlTemplate von einer Button

<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 übernommen wird, die Button wird als eine Ellipse:

Beispiel für Button-ControlTemplate

Beim Festlegen der Template Eigenschaft ein Control in ein neues ControlTemplate wie im obigen Beispiel können Sie die gesamte Vorlage ersetzen. Was die Button sieht wie bei den Fokus oder gedrückt ist alles Teil der standarddarstellung der Schaltfläche, die Sie ersetzen möchten. Aus diesem Grund kann je nach Bedarf sollen in der Definition die Schaltfläche suchen soll, wie diese geklickt wird usw., wie im folgenden Beispiel:

<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 verweisen auf Ressourcen, die hier nicht gezeigt werden. Das vollständige Beispiel finden Sie unter Styling with ControlTemplates Sample. Dieses Beispiel enthält Beispiele für Steuerelementvorlagen für viele Steuerelemente und ist die beste Möglichkeit für die ersten Schritte mit dem Erstellen von Vorlagen.

.NET Framework
Verfügbar seit 3.0
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: