OnApplyTemplate-Methode

FrameworkElement.OnApplyTemplate Method

Der Aufruf erfolgt immer dann, wenn Anwendungscode oder interne Prozesse (z. B. eine neu erstellende Layoutübergabe) ApplyTemplate aufrufen. Vereinfacht ausgedrückt: Die Methode wird kurz vor dem Anzeigen eines Benutzeroberflächenelements in Ihrer App aufgerufen. Überschreiben Sie diese Methode, um die standardmäßig POST TEMPLATE-Logik einer Klasse zu beeinflussen.

Syntax


protected virtual void OnApplyTemplate()

Parameter

Methode besitzt keine Parameter.

Hinweise

Obwohl OnApplyTemplate eine Methode ist, die von der FrameworkElement-Klasse definiert wird, sind das OnApplyTemplate-Verhalten und die Szenarien für die Überschreibung von OnApplyTemplate hauptsächlich für eine Control-Unterklasse relevant. Dies liegt daran, dass die Template-Eigenschaft, die Sie normalerweise in einer XAML-Datei und in der internen Windows-Runtime-Logik definieren, die die Vorlagen anwendet, speziell für Steuerelemente gelten. Spezialisiertes Vorlagenverhalten ist auch für ContentPresenter und ContentControl vorhanden.

Hinweise für Implementierer

Eine Basisimplementierung dieser Methode, die als internes Verhalten von Windows-Runtime implementiert ist, stellt eine gewisse grundlegende Layoutlogik bereit. Sie sollten diese Basisimplementierung immer aus Ihrer Implementierung heraus aufrufen. Wenn nicht auf die Basisimplementierung verwiesen wird, kann dies zu unerwünschtem Layoutverhalten führen.

Abgeleitete Klassen können diese Methode als Benachrichtigung oder als Einstiegspunkt für die folgenden Szenarios verwenden:

  • Erstellen des Rests einer visuellen Struktur mit benutzerdefiniertem Code
  • Startet Code, der erst ausgeführt werden kann, nachdem die XAML-definierte visuelle Struktur aus Vorlagen angewendet wurde. Zum Beispiel Code, der Verweise auf die benannten Elemente abruft, die von einer Vorlage stammen, und zwar durch Aufruf von GetTemplateChild, sodass auf die Member dieser Teile von anderem Laufzeitcode nach der Vorlage verwiesen werden kann.
  • Erstellen von Diensten, deren Vorhandensein erst nach der Vervollständigung der visuellen Struktur aus Vorlagen Sinn ergibt
  • Hängen Sie klassendefinierte Ereignishandler an Teile der Vorlage oder an das kontrollierende übergeordnete Element eines zusammengesetzten Steuerelements an. Beispielsweise können Sie die Klassenlogik KeyDown-weitergeleitete Ereignisse von einem TextBox-Vorlagenteil eines zusammengesetzten Steuerelements behandeln lassen. Dies würde so erfolgen, dass Benutzeroberflächenzustände basierend auf dem Eingabeereignis auf niedriger Ebene des Teils aktualisiert werden, und stattdessen andere Ereignisse ausgelöst werden, die für das Steuerelement spezifisch sind und vom übergeordneten Steuerelement ausgelöst werden.
  • Zustände und Eigenschaften von Elementen innerhalb der Vorlage festlegen, die von anderen Faktoren abhängen. Beispielsweise können Eigenschaftswerte nur dann erkannt werden, wenn das übergeordnete Element bekannt ist oder wenn eine bestimmte abgeleitete Klasse eine gemeinsame Vorlage verwendet. Beachten Sie jedoch, dass ein sorgfältig geplantes Steuerelement seine visuellen Zustände mit VisualStateManager behandeln sollte. Weitere Informationen zum Konzept finden Sie unter Schnellstart: Steuerelementvorlagen.

In OnApplyTemplate können Anpassungen an der mit Vorlagen erstellten visuellen Struktur oft besser vorgenommen werden als im Loaded-Ereignis. Das Loaded-Ereignis tritt möglicherweise auf, bevor die Vorlage angewendet wird, und die visuelle Struktur ist eventuell nach Loaded unvollständig.

Beispiele

In diesem Beispiel wird eine durch ein benutzerdefiniertes Steuerelement definierte OnApplyTemplate-Überschreibung veranschaulicht. Die Überschreibung wurde dafür entwickelt, dass Aufrufer über die Vorlage und Formatsystem möglicherweise ihre eigene Steuerelementvorlage definieren und übernehmen. Im Rahmen seiner Definition weist das Steuerelement die benannten Elemente innerhalb einer erforderlichen Vorlage, wie beispielsweise "UpButton" zu. Wenn dann die Vorlage geladen wird, ruft OnApplyTemplate über GetTemplateChild die Objektverweise basierend auf diesem Benennungsvertrag ab. (Die festgelegten Werte, beispielsweise "UpButtonElement", verweisen auf die privaten Felder, die auf Klassenebene definiert werden, damit andere Member der Klasse auf diesen Teil als Objekt zur Laufzeit verweisen können.) In diesem Beispiel wird auch die private Methode UpdateStates aufgerufen (Definition wird nicht angezeigt). Dies ist ein weiteres übliches Szenario für OnApplyTemplate: Sicherstellen, dass der visuelle Zustand für den Startzustand des Steuerelements festgelegt ist, in diesem Fall durch das Aufrufen einer privaten Methode, die für alle definierten Zustände der Steuerung verantwortlich ist und GoToState aufruft, um den entsprechenden Zustand festzulegen.


protected override void OnApplyTemplate()
{
    UpButtonElement = GetTemplateChild("UpButton") as RepeatButton;
    DownButtonElement = GetTemplateChild("DownButton") as RepeatButton;
    TextElement = GetTemplateChild("TextBlock") as TextBlock;

    UpdateStates(false);
}


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadaten

Windows.winmd

Siehe auch

FrameworkElement
ControlTemplate
GetTemplateChild
Schnellstart: Steuerelemente für die Formatierung

 

 

Anzeigen:
© 2016 Microsoft