Condividi tramite


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, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class ControlTemplate final : FrameworkTemplate
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
    templateRootElement
</ControlTemplate>
Ereditarietà
Object Platform::Object IInspectable DependencyObject FrameworkTemplate ControlTemplate
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

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

  • Quando l'utente inserisce il mouse sul pulsante, la griglia cambia da verde a rosso oltre un secondo.
  • Quando l'utente sposta il mouse lontano dal pulsante , griglia cambia immediatamente in 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 versione>\Generic.

Commenti

Per altre informazioni ed esempi, vedere Modelli di controllo XAML.

ControlTemplate viene usato come valore della proprietà Control.Template , che definisce gli oggetti visivi di un controllo applicando il modello. Si definisce quasi sempre un Oggetto ControlTemplate come risorsa XAML, usando un TargetType di chiave implicito uguale a uno stile che imposta Control.Template con un Setter. Raramente, se mai assegnare un valore per Control.Template direttamente in un'istanza del controllo.

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

Per impostare il contenuto da un ControlloTemplate, un elemento di 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 comporta in genere una delle altre classi di modelli derivate di FrameworkTemplate (DataTemplate o ItemsPanelTemplate).

I modelli di controllo forniscono gli oggetti visivi e le parti che costituiscono un'istanza di un controllo come viene visualizzato 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 veramente parti del controllo e possono essere accessibili da tecniche, ad esempio esaminando i nomi XAML dal contenuto del controllo o usando la classe VisualTreeHelper . Eventi come gli eventi di input a volte 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.

Il momento effettivo in cui viene applicato un oggetto ControlTemplate a un'istanza di controllo può essere rilevato perché richiama il metodo virtuale protetto OnApplyTemplate . Purché il controllo non sia bloccato, è possibile sottoclassere un controllo in modo che sia possibile 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 gestori eventi alle parti di controllo o impostare le proprietà del controllo per fare riferimento alle parti oggetto create dal modello, ma non iniziavano con un valore di estensione di markup {TemplateBinding} .

Costruttori

ControlTemplate()

Inizializza una nuova istanza della classe ControlTemplate .

Proprietà

Dispatcher

Ottiene CoreDispatcher associato a questo oggetto. CoreDispatcher rappresenta una struttura che può accedere a DependencyObject nel thread dell'interfaccia utente anche se il codice viene avviato da un thread non 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 un oggetto DependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

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

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche a un'istanza di DependencyObject specifica.

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza in un oggetto 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