ControlTemplate Klasse

Definition

Definiert die Elementstruktur, die als Steuerelementvorlage für ein Steuerelement verwendet wird.

public ref class ControlTemplate sealed : FrameworkTemplate
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ControlTemplate final : FrameworkTemplate
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
    templateRootElement
</ControlTemplate>
Vererbung
Object Platform::Object IInspectable DependencyObject FrameworkTemplate ControlTemplate
Attribute

Beispiele

Im folgenden Beispiel wird eine einfache ControlTemplate für eine Schaltfläche erstellt. Die Steuerelementvorlage enthält ein Raster und gibt dieses Verhalten an:

  • Wenn der Benutzer mit der Maus auf die Schaltfläche zeigt, ändert sich das Raster von Grün in Rot über eine halbe Sekunde.
  • Wenn der Benutzer die Maus von der Schaltfläche weg bewegt, ändert sich das Raster sofort wieder in Grün.
<ControlTemplate TargetType="Button">
  <Grid >
    <VisualStateManager.VisualStateGroups>
      <VisualStateGroup x:Name="CommonStates">

        <VisualStateGroup.Transitions>

          <!--Take one half second to transition to the PointerOver state.-->
          <VisualTransition To="PointerOver" 
                              GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>
        
        <VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            Pointer is over the button.-->
        <VisualState x:Name="PointerOver">
          <Storyboard>
            <ColorAnimation Storyboard.TargetName="ButtonBrush" 
                            Storyboard.TargetProperty="Color" To="Red" />
          </Storyboard>
        </VisualState>
      </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Grid.Background>
      <SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
    </Grid.Background>
  </Grid>
</ControlTemplate>

Die vollständige Vorlage für jedes XAML-Steuerelement wird in der Datei "generic.xaml " angezeigt. Diese Datei befindet sich im Ordner "(Programme)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic".

Hinweise

Weitere Informationen und Beispiele finden Sie unter XAML-Steuerelementvorlagen.

ControlTemplate wird als Wert der Control.Template-Eigenschaft verwendet, die die visuellen Elemente eines Steuerelements definiert, indem die Vorlage angewendet wird. Sie definieren fast immer eine ControlTemplate als XAML-Ressource mit einem impliziten Schlüssel TargetType , der mit einem Stil identisch ist, der Control.Template mit einem Setter festlegt. Sie weisen selten einen Wert für Control.Template direkt auf einer Steuerelementinstanz zu.

Es gibt wirklich nur zwei Eigenschaften, die Sie beim Definieren einer ControlTemplate verwenden: den TargetType und den impliziten XAML-Inhalt. ControlTemplate erbt das implizite XAML-Inhaltsverhalten vom übergeordneten FrameworkTemplate-Element . Im Grunde wird das element, das in einer ControlTemplate enthalten ist, wie in XAML definiert, ein Stammelement für eine weitere Struktur von XAML-Elementen zugewiesen, die die Vorlage definieren. Dies ist das Festlegen einer "Template"-Eigenschaft, die anschließend nicht durch Code untersucht werden kann und nur bedeutungslos ist, wie der XAML-Parser Basierend auf der Anwendung dieser Vorlage Inhalte für Steuerelemente zuweist.

Damit der Inhalt aus einer ControlTemplate festgelegt werden kann, muss ein Steuerelementelement eine echte Steuerelementunterklasse sein, sodass er über die Control.Template-Eigenschaft verfügt. Es gibt andere Fälle, in denen Vorlagen Inhalte anwenden, dies umfasst jedoch in der Regel eine der anderen von FrameworkTemplate abgeleiteten Vorlagenklassen (DataTemplate oder ItemsPanelTemplate).

Steuerelementvorlagen stellen die visuellen Elemente und Teile bereit, aus denen eine Instanz eines Steuerelements besteht, wie es in der Benutzeroberfläche einer App angezeigt wird. Zur Laufzeit wurde die Vorlage bereits angewendet, und daher sind alle Teile, die aus der Vorlage erstellt wurden, jetzt wirklich Teile des Steuerelements und können über Techniken wie das Untersuchen der XAML-NameScopes innerhalb des Steuerelementinhalts oder mithilfe der VisualTreeHelper-Klasse zugegriffen werden. Ereignisse wie die Eingabeereignisse machen manchmal die Teile eines Steuerelements verfügbar, die aus der angewendeten Steuerelementvorlage stammen.

Es gibt Möglichkeiten, auf vorlagendefinierte Inhalte entweder vor oder nach anwendung der Vorlage auf eine bestimmte Steuerelementinstanz zuzugreifen; siehe OnApplyTemplate oder GetTemplateChild.

Der tatsächliche Zeitpunkt, zu dem eine ControlTemplate auf eine Steuerelementinstanz angewendet wird, kann erkannt werden, da dadurch die von OnApplyTemplate geschützte virtuelle Methode aufgerufen wird. Solange das Steuerelement nicht versiegelt ist, können Sie ein Steuerelement unterklassen, sodass Sie die Möglichkeit haben, OnApplyTemplate außer Kraft zu setzen. Diese Außerkraftsetzung kann geschrieben werden, um Aktionen auszuführen, die vor der Anwendung der Vorlage nicht möglich wären. Sie können z. B. Ereignishandler mit Steuerelementteilen verknüpfen oder Steuerelementeigenschaften festlegen, um auf Objektteile zu verweisen, die aus der Vorlage erstellt wurden, aber nicht mit einem {TemplateBinding}-Markuperweiterungswert begonnen haben.

Konstruktoren

Name Beschreibung
ControlTemplate()

Initialisiert eine neue Instanz der ControlTemplate-Klasse .

Eigenschaften

Name Beschreibung
Dispatcher

Gibt immer in einer Windows App SDK-App zurück null . Verwenden Sie stattdessen DispatcherQueue .

(Geerbt von DependencyObject)
DispatcherQueue

Ruft ab DispatcherQueue , dem dieses Objekt zugeordnet ist. Dies DispatcherQueue stellt eine Einrichtung dar, die auf den DependencyObject UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird.

(Geerbt von DependencyObject)
TargetType

Ruft den Typ ab, auf den die ControlTemplate angewendet wird, oder legt diesen fest.

Methoden

Name Beschreibung
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Gibt einen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, was in Fällen angewendet wird, in denen eine Animation nicht aktiv ist.

(Geerbt von DependencyObject)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück.

(Geerbt von DependencyObject)
ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn ein lokaler Wert festgelegt wird.

(Geerbt von DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion, um Änderungen an einer bestimmten DependencyProperty für diese DependencyObject-Instanz zu überwachen.

(Geerbt von DependencyObject)
SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest.

(Geerbt von DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde.

(Geerbt von DependencyObject)

Gilt für:

Weitere Informationen