FrameworkElement.OnApplyTemplate Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wird aufgerufen, wenn Anwendungscode oder interne Prozesse (z. B. ein neuerstellender Layoutdurchlauf) ApplyTemplate aufrufen. Dies bedeutet, dass die Methode einfach 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 von einem benutzerdefinierten Steuerelement definiert wird. Die Außerkraftsetzung ist so konzipiert, dass Anrufer potenziell ihre eigene Steuerelementvorlage über das Vorlagen- und Stilsystem definieren und anwenden. Im Rahmen der Definition attributet das Steuerelement die benannten Elemente in einer vorlage, die erforderlich sind, z. B. "UpButton". Ruft dann OnApplyTemplate die Objektverweise basierend auf diesem Benennungsvertrag ab, wenn die Vorlage geladen wird und GetTemplateChild aufgerufen wird. (Die festgelegten Werte, z. B. "UpButtonElement", beziehen sich auf private Felder, die auf Klassenebene definiert sind, sodass andere Elemente der Klasse zur Laufzeit auf diesen Teil als Objekt verweisen können.) Außerdem ruft dieses Beispiel die private Methode UpdateStates auf (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 ruft GoToState auf, 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);
}
Hinweise
Obwohl OnApplyTemplate es sich um eine von der FrameworkElement-Klasse definierte Methode handelt, sind das OnApplyTemplate Verhalten und die Szenarien für das Überschreiben OnApplyTemplate hauptsächlich für eine Control-Unterklasse relevant. Dies liegt daran, dass die Template-Eigenschaft, die Sie in der Regel in einer XAML-Datei definieren, und die interne Windows-Runtime-Logik, die die Vorlagen anwendet, speziell für Steuerelemente gelten. Spezielles 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 wird, das eine grundlegende Layoutlogik bereitstellt. Sie sollten die Basisimplementierung immer aus Ihrer Implementierung aufrufen. Wenn Sie nicht auf die Basisimplementierung verweisen, kann dies 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 mit benutzerdefiniertem Code.
- Führen Sie Code aus, der nur funktionieren kann, nachdem die xaml-definierte visuelle Struktur aus Vorlagen angewendet wurde. Beispielsweise code that obtains references to named elements that came from a template, by calling GetTemplateChild, so that members of these parts can be referenced by other post-template runtime code.
- Stellen Sie Dienste vor, die nur sinnvoll sind, nachdem die visuelle Struktur aus Vorlagen abgeschlossen ist.
- Fügen Sie klassendefinierte Ereignishandler an Teile der Vorlage oder das übergeordnete Steuerelement eines zusammengesetzten Steuerelements an. Sie können z. B. eine Klassenlogik zum Behandeln von Routing-KeyDown-Ereignissen aus einem TextBox-Vorlagenteil eines zusammengesetzten Steuerelements verwenden. Dies geschieht, damit UI-Zustände basierend auf dem Eingabeereignis auf niedriger Ebene des Teils aktualisiert werden, und andere Ereignisse, 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. Eigenschaftswerte können z. B. nur durch Die Kenntnis des übergeordneten Elements oder durch Verwendung einer allgemeinen Vorlage durch eine bestimmte abgeleitete Klasse ermittelt werden. Beachten Sie jedoch, dass ein gut gestaltetes Steuerelement seine visuellen Zustände mit VisualStateManager behandeln sollte. Weitere Informationen zu diesem Konzept finden Sie unter XAML-Steuerelementvorlagen.
OnApplyTemplate ist häufig ein geeigneterer Punkt, um Anpassungen an der vom Vorlagen erstellten visuellen Struktur zu behandeln, als das Loaded-Ereignis ist. Das Loaded-Ereignis kann auftreten, bevor die Vorlage angewendet wird, und die visuelle Struktur ist ab dem Laden unvollständig.