FrameworkElement.OnApplyTemplate Methode

Definition

Wird immer dann aufgerufen, wenn Anwendungscode oder interne Prozesse (z. B. ein neuer Erstellter Layoutdurchlauf) ApplyTemplate aufrufen. Einfach ausgedrückt bedeutet dies, dass die Methode aufgerufen wird, bevor ein UI-Element in Ihrer App angezeigt wird. Überschreiben Sie diese Methode, um die Standardlogik nach der Vorlage einer Klasse zu beeinflussen.

protected:
 virtual void OnApplyTemplate() = OnApplyTemplate;
void OnApplyTemplate();
protected virtual void OnApplyTemplate();
function onApplyTemplate()
Protected Overridable Sub OnApplyTemplate ()

Beispiele

Dieses Beispiel zeigt eine OnApplyTemplate-Überschreibung, die durch ein benutzerdefiniertes Steuerelement definiert wird. Die Außerkraftsetzung ist für Aufrufer konzipiert, die möglicherweise ihre eigene Steuerelementvorlage über das Vorlagen- und Stilsystem definieren und anwenden. Als Teil seiner Definition attributet das Steuerelement die benannten Elemente innerhalb einer Vorlage, die erforderlich sind, z. B. "UpButton". Dann ruft OnApplyTemplate die Objektverweise basierend auf diesem Benennungsvertrag ab, wenn die Vorlage geladen wird, und ruft GetTemplateChild auf. (Die festzulegenden Werte, z. B. "UpButtonElement", verweisen auf private Felder, die auf Klassenebene definiert sind, damit andere Member der Klasse zur Laufzeit als Objekt auf diesen Teil verweisen können.) Außerdem wird in diesem Beispiel die private Methode UpdateStates aufgerufen (Definition nicht angezeigt). Dies ist ein weiteres gängiges Szenario für OnApplyTemplate: Stellen Sie sicher, dass der visuelle Zustand für den Startzustand des Steuerelements festgelegt ist, in diesem Fall durch Aufrufen einer privaten Methode, die alle definierten Zustände des Steuerelements erfasst, 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);
}
Protected Overloads Sub OnApplyTemplate()
    UpButtonElement = TryCast(GetTemplateChild("UpButton"), RepeatButton)
    DownButtonElement = TryCast(GetTemplateChild("DownButton"), RepeatButton)
    TextElement = TryCast(GetTemplateChild("TextBlock"), TextBlock)

    UpdateStates(False)
End Sub

Hinweise

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

Hinweise für Implementierer

Es gibt eine Basisimplementierung dieser Methode, die als Windows-Runtime internes Verhalten implementiert ist, das eine grundlegende Layoutlogik bereitstellt. Sie sollten immer die Basisimplementierung aus Ihrer Implementierung aufrufen. Ein Fehler beim Verweisen auf die Basisimplementierung kann zu unerwünschtem Layoutverhalten führen.

Abgeleitete Klassen können diese Methode als Benachrichtigungs- oder Einstiegspunkt für die folgenden Szenarien verwenden:

  • Erstellen Sie den Rest einer visuellen Struktur mithilfe von benutzerdefiniertem Code.
  • Führen Sie Code aus, der nur funktionieren kann, nachdem die XAML-definierte visuelle Struktur aus Vorlagen angewendet wurde. Beispiel: Code, der Verweise auf benannte Elemente aus einer Vorlage erhält, indem GetTemplateChild aufgerufen wird, sodass Elemente dieser Teile von anderen Laufzeitcode nach der Vorlage referenziert werden können.
  • Führen Sie Dienste ein, die erst nach Abschluss der visuellen Struktur aus Vorlagen sinnvoll sind.
  • Fügen Sie klassendefinierte Ereignishandler an Teile der Vorlage oder das übergeordnete Steuerelement eines zusammengesetzten Steuerelements an. Beispielsweise kann die Klassenlogik weitergeleitete KeyDown-Ereignisse aus einem TextBox-Vorlagenteil eines zusammengesetzten Steuerelements behandeln. Sie würden dies tun, sodass die Benutzeroberflächenzustände basierend auf dem Eingabeereignis auf niedriger Ebene des Teils aktualisiert werden, und stattdessen andere Ereignisse ausgelöst werden, die für Ihr Steuerelement spezifisch sind und vom übergeordneten Steuerelement ausgelöst werden.
  • Legen Sie Zustände und Eigenschaften von Elementen innerhalb der Vorlage fest, die von anderen Faktoren abhängig sind. Beispielsweise können Eigenschaftswerte nur durch Kenntnis des übergeordneten Elements ermittelt werden oder wenn eine bestimmte abgeleitete Klasse eine allgemeine Vorlage verwendet. Beachten Sie jedoch, dass ein gut entworfenes Steuerelement seine visuellen Zustände mit VisualStateManager behandeln sollte. Weitere Informationen zu diesem Konzept finden Sie unter Schnellstart: Steuerelementvorlagen.

OnApplyTemplate ist häufig ein geeigneterer Punkt, um Anpassungen an der von der Vorlage erstellten visuellen Struktur zu behandeln, als das Loaded-Ereignis . Das Loaded-Ereignis kann auftreten, bevor die Vorlage angewendet wird, und die visuelle Struktur kann ab Loaded unvollständig sein.

Gilt für:

Weitere Informationen