Condividi tramite


FrameworkElement.OnApplyTemplate Metodo

Definizione

Richiamato ogni volta che il codice dell'applicazione o i processi interni (ad esempio un passaggio di ricompilazione del layout) chiama ApplyTemplate. In termini più semplici, questo significa che il metodo viene chiamato appena prima che venga visualizzato un elemento dell'interfaccia utente nell'app. Eseguire l'override di questo metodo per influenzare la logica post-modello predefinita di una classe.

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

Esempio

Questo esempio mostra un OnApplyTemplate override definito da un controllo personalizzato. L'override è progettato per tenere conto dei chiamanti potenzialmente che definiscono e applicano il proprio modello di controllo tramite il modello e il sistema di stile. Come parte della definizione, il controllo attributi gli elementi denominati all'interno di un modello necessario, ad esempio "UpButton". Recupera quindi OnApplyTemplate i riferimenti all'oggetto in base a questo contratto di denominazione quando il modello viene caricato, chiamando GetTemplateChild. I valori impostati, ad esempio "UpButtonElement", fanno riferimento a campi privati definiti a livello di classe in modo che altri membri della classe possano fare riferimento a tale parte come oggetto in fase di esecuzione. In questo esempio viene anche chiamato il metodo UpdateStates privato (definizione non visualizzata). Questo è un altro scenario comune per OnApplyTemplate: assicurarsi che lo stato visivo sia impostato per lo stato iniziale del controllo, in questo caso chiamando un metodo privato che account tutti gli stati definiti del controllo e chiama GoToState per impostare lo stato appropriato.

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

    UpdateStates(false);
}

Commenti

Sebbene OnApplyTemplate sia un metodo definito dalla classe FrameworkElement , il OnApplyTemplate comportamento e gli scenari per l'override sono principalmente rilevanti per una sottoclasse OnApplyTemplateControl . Questa operazione è dovuta al fatto che la proprietà Template definita in genere in un file XAML e la logica interna Windows Runtime che applica i modelli sono specificamente per i controlli. Esiste anche un comportamento di modello specializzato per ContentPresenter e ContentControl.

Note per gli implementatori

Esiste un'implementazione di base di questo metodo implementata come comportamento interno Windows Runtime, che fornisce una logica di layout di base. È consigliabile chiamare sempre l'implementazione di base dall'implementazione. Se non si fa riferimento all'implementazione di base, potrebbe verificarsi un comportamento di layout indesiderato.

Le classi derivate possono usare questo metodo come punto di ingresso o notifica per gli scenari seguenti:

  • Compilare il resto di un albero visivo usando codice personalizzato.
  • Eseguire il codice che può funzionare solo dopo l'applicazione dell'albero visivo definito da XAML dai modelli. Ad esempio, il codice che ottiene riferimenti agli elementi denominati provenienti da un modello chiamando GetTemplateChild, in modo che i membri di queste parti possano essere a cui fa riferimento altri codici di runtime post-modello.
  • Introdurre i servizi che hanno senso solo dopo il completamento dell'albero visivo dai modelli.
  • Collegare i gestori eventi definiti dalla classe alle parti del modello o all'elemento padre del controllo di un controllo composito. Ad esempio, è possibile che la logica della classe gestisca gli eventi KeyDown indirizzati da una parte del modello TextBox di un controllo composito. A tale scopo, gli stati dell'interfaccia utente vengono aggiornati in base all'evento di input di basso livello della parte e ad altri eventi specifici del controllo e generati dall'elemento padre del controllo vengono generati.
  • Impostare stati e proprietà degli elementi all'interno del modello dipendenti da altri fattori. Ad esempio, i valori delle proprietà possono essere individuabili solo conoscendo l'elemento padre o quando una classe derivata specifica usa un modello comune. Si noti tuttavia che un controllo ben progettato deve gestire i relativi stati visivi con VisualStateManager. Per altre informazioni su questo concetto, vedere Modelli di controllo XAML.

OnApplyTemplate è spesso un punto più appropriato per gestire le modifiche apportate all'albero visivo creato dal modello rispetto all'evento Loaded . L'evento caricato potrebbe verificarsi prima dell'applicazione del modello e l'albero visivo potrebbe essere incompleto a partire da Loaded.

Si applica a

Vedi anche