ControlTemplate Classe

Definizione

Definisce l'albero degli elementi utilizzato come modello di controllo per un controllo.

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>
Ereditarietà
Object Platform::Object IInspectable DependencyObject FrameworkTemplate ControlTemplate
Attributi

Esempio

Nell'esempio seguente viene creato un oggetto ControlTemplate semplice per un controllo Button. Il modello di controllo contiene una griglia e specifica questo comportamento:

  • Quando l'utente posiziona il mouse sul pulsante, la griglia passa da verde a rosso su mezzo secondo.
  • Quando l'utente sposta il mouse lontano dal pulsante, la griglia diventa immediatamente verde.
<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>

È possibile visualizzare il modello completo per ogni controllo XAML nel file generic.xaml . Questo file si trova nella cartella (Programmi)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic.

Commenti

Per altre info ed esempi, vedi Modelli di controllo XAML.

ControlTemplate viene utilizzato come valore della proprietà Control.Template , che definisce gli oggetti visivi di un controllo applicando il modello. Definisci quasi sempre controlTemplate come risorsa XAML, usando una chiave implicita TargetType uguale a uno stile che imposta Control.Template con un setter. Raramente si assegna un valore per Control.Template direttamente in un'istanza del controllo.

Ci sono davvero due proprietà che usi per definire un ControlTemplate: TargetType e il contenuto XAML implicito. ControlTemplate eredita il comportamento implicito del contenuto XAML dal relativo elemento padre FrameworkTemplate . Fondamentalmente l'elemento contenuto in un ControlTemplate come definito in XAML assegna un elemento radice per un'ulteriore struttura di elementi XAML che definiscono il modello. Questa è l'impostazione di una proprietà "Template" che non può essere esaminata successivamente dal codice e ha significato solo il modo in cui il parser XAML assegna il contenuto per i controlli in base all'applicazione di tale modello.

Per impostarne il contenuto da controlTemplate, un elemento del controllo deve essere una sottoclasse Control true, in modo che abbia la proprietà Control.Template . Esistono altri casi in cui i modelli applicano il contenuto, ma questo implica in genere una delle altre classi di modello derivate FrameworkTemplate (DataTemplate o ItemsPanelTemplate).

I modelli di controllo forniscono gli oggetti visivi e le parti che costituiscono un'istanza di un controllo come appare nell'interfaccia utente di un'app. In fase di esecuzione, il modello è già stato applicato e quindi tutte le parti create fuori dal modello sono ora effettivamente parti del controllo e possono essere accessibili tramite tecniche come l'analisi degli ambiti dei nomi XAML dal contenuto del controllo o tramite la classe VisualTreeHelper . Eventi come gli eventi di input talvolta espongono le parti di un controllo proveniente dal modello di controllo applicato.

Esistono modi per accedere al contenuto definito dal modello prima o dopo l'applicazione del modello a un'istanza di controllo specifica; vedere OnApplyTemplate o GetTemplateChild.

È possibile rilevare il punto effettivo nel tempo in cui un oggetto ControlTemplate viene applicato a un'istanza di controllo perché richiama il metodo virtuale protetto OnApplyTemplate . Purché il controllo non sia sealed, è possibile sottoclassare un controllo in modo da poter eseguire l'override di OnApplyTemplate. Questa override può essere scritta per eseguire azioni che non sarebbero possibili prima dell'applicazione del modello. Ad esempio, è possibile collegare i gestori eventi alle parti di controllo o impostare le proprietà del controllo per fare riferimento alle parti oggetto create fuori dal modello, ma non con un valore di estensione di markup {TemplateBinding} .

Costruttori

ControlTemplate()

Inizializza una nuova istanza della classe ControlTemplate .

Proprietà

Dispatcher

Restituisce null sempre in un'app SDK per app di Windows. Usare invece DispatcherQueue .

(Ereditato da DependencyObject)
DispatcherQueue

Ottiene l'oggetto a cui è associato l'oggetto DispatcherQueue . DispatcherQueue Rappresenta una funzionalità che può accedere a nel thread dell'interfaccia DependencyObject utente anche se il codice viene avviato da un thread non dell'interfaccia utente.

(Ereditato da DependencyObject)
TargetType

Ottiene o imposta il tipo a cui viene applicato controlTemplate .

Metodi

ClearValue(DependencyProperty)

Cancella il valore locale di una proprietà di dipendenza.

(Ereditato da DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Restituisce qualsiasi valore di base stabilito per una proprietà di dipendenza, che si applica nei casi in cui un'animazione non è attiva.

(Ereditato da DependencyObject)
GetValue(DependencyProperty)

Restituisce il valore effettivo corrente di una proprietà di dipendenza da dependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

Restituisce il valore locale di una proprietà di dipendenza, se è impostato un valore locale.

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche apportate a una dipendenza specifica in questa istanza di DependencyObject .

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza su dependencyObject.

(Ereditato da DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annulla una notifica di modifica registrata in precedenza chiamando RegisterPropertyChangedCallback.

(Ereditato da DependencyObject)

Si applica a

Vedi anche