Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe ControlTemplate

 

Data di pubblicazione: ottobre 2016

Specifica la struttura visiva e gli aspetti di comportamento di un Control che possono essere condivisi tra più istanze del controllo.

Spazio dei nomi:   System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.FrameworkTemplate
      System.Windows.Controls.ControlTemplate

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[DictionaryKeyPropertyAttribute("TargetType")]
public class ControlTemplate : FrameworkTemplate

NomeDescrizione
System_CAPS_pubmethodControlTemplate()

Inizializza una nuova istanza della classe ControlTemplate.

System_CAPS_pubmethodControlTemplate(Type)

Inizializza una nuova istanza di ControlTemplate classe con il tipo di destinazione specificato.

NomeDescrizione
System_CAPS_pubpropertyDispatcher

Ottiene il Dispatcher questo DispatcherObject è associato.(Ereditato da DispatcherObject.)

System_CAPS_pubpropertyHasContent

Ottiene un valore che indica se il contenuto di questo modello è ottimizzato.(Ereditato da FrameworkTemplate.)

System_CAPS_pubpropertyIsSealed

Ottiene un valore che indica se questo oggetto è in uno stato non modificabile in modo che non può essere modificata.(Ereditato da FrameworkTemplate.)

System_CAPS_pubpropertyResources

Ottiene o imposta la raccolta di risorse che possono essere utilizzate all'interno dell'ambito di questo modello.(Ereditato da FrameworkTemplate.)

System_CAPS_pubpropertyTargetType

Ottiene o imposta il tipo per cui ControlTemplate è destinato.

System_CAPS_pubpropertyTemplate

Ottiene o imposta un riferimento all'oggetto che registra o riproduce i nodi XAML per il modello quando il modello è definito o applicato da un writer.(Ereditato da FrameworkTemplate.)

System_CAPS_pubpropertyTriggers

Ottiene una raccolta di TriggerBase gli oggetti che si applicano le modifiche alle proprietà o eseguono azioni in base a determinate condizioni.

System_CAPS_pubpropertyVisualTree

Ottiene o imposta il nodo radice del modello.(Ereditato da FrameworkTemplate.)

NomeDescrizione
System_CAPS_pubmethodCheckAccess()

Determina se il thread chiamante ha accesso a questo DispatcherObject.(Ereditato da DispatcherObject.)

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.(Ereditato da Object.)

System_CAPS_protmethodFinalize()

Consente a un oggetto di effettuare un tentativo di liberare risorse ed eseguire altre operazioni di pulizia prima che venga recuperato da Garbage Collection.(Ereditato da Object.)

System_CAPS_pubmethodFindName(String, FrameworkElement)

Trova l'elemento associato al nome specificato definito all'interno del modello.(Ereditato da FrameworkTemplate.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodLoadContent()

Carica il contenuto del modello come un'istanza di un oggetto e restituisce l'elemento radice del contenuto.(Ereditato da FrameworkTemplate.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_pubmethodRegisterName(String, Object)

Registra una nuova coppia nome/oggetto nell'ambito di nome corrente.(Ereditato da FrameworkTemplate.)

System_CAPS_pubmethodSeal()

Blocca il modello in modo che non può essere modificata.(Ereditato da FrameworkTemplate.)

System_CAPS_pubmethodShouldSerializeResources(XamlDesignerSerializationManager)

Restituisce un valore che indica se i processi di serializzazione devono serializzare il valore di Resources proprietà nelle istanze di questa classe.(Ereditato da FrameworkTemplate.)

System_CAPS_pubmethodShouldSerializeVisualTree()

Restituisce un valore che indica se i processi di serializzazione devono serializzare il valore di VisualTree proprietà nelle istanze di questa classe.(Ereditato da FrameworkTemplate.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente.(Ereditato da Object.)

System_CAPS_pubmethodUnregisterName(String)

Rimuove un mapping nome/oggetto dal namescope XAML.(Ereditato da FrameworkTemplate.)

System_CAPS_protmethodValidateTemplatedParent(FrameworkElement)

Controlla il padre basato su modelli rispetto a un set di regole.(Esegue l'override di FrameworkTemplate.ValidateTemplatedParent(FrameworkElement).)

System_CAPS_pubmethodVerifyAccess()

Impone che il thread chiamante abbia accesso a questo DispatcherObject.(Ereditato da DispatcherObject.)

NomeDescrizione
System_CAPS_pubinterfaceSystem_CAPS_privmethodINameScope.FindName(String)

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Restituisce un oggetto con il nome identificativo specificato.(Ereditato da FrameworkTemplate.)

System_CAPS_pubinterfaceSystem_CAPS_privmethodIQueryAmbient.IsAmbientPropertyAvailable(String)

Esegue una query se una proprietà di ambiente specificata è disponibile nell'ambito corrente.(Ereditato da FrameworkTemplate.)

Il ControlTemplate consente di specificare la struttura visiva di un controllo. L'autore del controllo definisce il valore predefinito ControlTemplate e l'autore dell'applicazione può eseguire l'override di ControlTemplate per ricostruire la struttura visiva del controllo.

Modello di controllo è una delle numerose funzionalità offerte da di WPF modello di stili e modelli. Il modello di stili e modelli offre una grande flessibilità che in molti casi non occorre scrivere controlli personalizzati. Se si è un autore dell'applicazione che si desidera modificare la visualizzazione del controllo o a sostituire il ControlTemplate di un controllo esistente, vedere il di stili e modelli argomento per informazioni più dettagliate ed esempi.

Se si sta scrivendo un controllo personalizzato, vedere "Creazione di un controllo personalizzato" nel Control Authoring Overview.

Oggetto ControlTemplate deve essere un'unità indipendente di dettaglio di implementazione invisibile a utenti e oggetti esterni, inclusi gli stili. L'unico modo per modificare il contenuto del modello di controllo è all'interno del modello di controllo stesso.

<ControlTemplate>
  <VisualTreeRootNode>VisualTreeNodeContents
  </VisualTreeRootNode>
</ControlTemplate>

ControlTemplate

Elemento oggetto per ControlTemplate o una classe derivata.

VisualTreeRootNode

Un singolo XAML elemento come figlio diretto del ControlTemplate (o una classe derivata). Modelli devono disporre di un singolo nodo radice. Per generare un modello utile, l'elemento scelto come VisualTreeRootNode deve supportare un modello di contenuto di un proprio, spesso un modello che supporta più elementi figlio.

VisualTreeNodeContents

Uno o più elementi che completano il modello desiderato. Se l'elemento scelto come VisualTreeRootNode supporta solo un singolo elemento figlio, quindi si possono solo essere dichiarato un elemento come VisualTreeNodeContents. È inoltre possibile (sebbene poco) per fornire contenuto di testo se la scelta VisualTreeRootNode supporta una proprietà di contenuto di testo.

Nel seguente viene mostrato un Button Style che imposta il ControlTemplate di un Button

<Style TargetType="Button">
  <!--Set to true to not get any properties from the themes.-->
  <Setter Property="OverridesDefaultStyle" Value="True"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Grid>
          <Ellipse Fill="{TemplateBinding Background}"/>
          <ContentPresenter HorizontalAlignment="Center"
                            VerticalAlignment="Center"/>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Quando viene applicato, il Button viene visualizzato come un Ellipse:

Esempio di ControlTemplate del pulsante

Quando si imposta la Template proprietà di un Control a un nuovo ControlTemplate come illustrato nell'esempio precedente, si sta sostituendo l'intero modello. Novità di Button ha un aspetto simile al momento attivo o pressione fa parte dell'aspetto predefinito del pulsante su cui si sta sostituendo. Pertanto, a seconda delle esigenze, potrebbe da inserire nella definizione dell'aspetto del pulsante dovrebbe essere simile quando viene premuto e così via, come nell'esempio seguente:

<Style TargetType="Button">
  <Setter Property="SnapsToDevicePixels"
          Value="true" />
  <Setter Property="OverridesDefaultStyle"
          Value="true" />
  <Setter Property="FocusVisualStyle"
          Value="{StaticResource ButtonFocusVisual}" />
  <Setter Property="MinHeight"
          Value="23" />
  <Setter Property="MinWidth"
          Value="75" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="Button">
        <Border TextBlock.Foreground="{TemplateBinding Foreground}"
                x:Name="Border"
                CornerRadius="2"
                BorderThickness="1">
          <Border.BorderBrush>
            <LinearGradientBrush StartPoint="0,0"
                                 EndPoint="0,1">
              <LinearGradientBrush.GradientStops>
                <GradientStopCollection>
                  <GradientStop Color="{DynamicResource BorderLightColor}"
                                Offset="0.0" />
                  <GradientStop Color="{DynamicResource BorderDarkColor}"
                                Offset="1.0" />
                </GradientStopCollection>
              </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>

          </Border.BorderBrush>
          <Border.Background>
            <LinearGradientBrush EndPoint="0.5,1"
                                 StartPoint="0.5,0">
              <GradientStop Color="{DynamicResource ControlLightColor}"
                            Offset="0" />
              <GradientStop Color="{DynamicResource ControlMediumColor}"
                            Offset="1" />
            </LinearGradientBrush>
          </Border.Background>
          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualStateGroup.Transitions>
                <VisualTransition GeneratedDuration="0:0:0.5" />
                <VisualTransition GeneratedDuration="0"
                                  To="Pressed" />
              </VisualStateGroup.Transitions>
              <VisualState x:Name="Normal" />
              <VisualState x:Name="MouseOver">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource ControlMouseOverColor}" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Pressed">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource ControlPressedColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                      (GradientBrush.GradientStops)[0].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource PressedBorderDarkColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource PressedBorderLightColor}" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Disabled">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledControlDarkColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames
                      Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledForegroundColor}" />
                  </ColorAnimationUsingKeyFrames>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                                Storyboard.TargetName="Border">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledBorderDarkColor}" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
          <ContentPresenter Margin="2"
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center"
                            RecognizesAccessKey="True" />
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsDefault"
                   Value="true">

            <Setter TargetName="Border"
                    Property="BorderBrush">
              <Setter.Value>
                <LinearGradientBrush StartPoint="0,0"
                                     EndPoint="0,1">
                  <GradientBrush.GradientStops>
                    <GradientStopCollection>
                      <GradientStop Color="{DynamicResource DefaultBorderBrushLightBrush}"
                                    Offset="0.0" />
                      <GradientStop Color="{DynamicResource DefaultBorderBrushDarkColor}"
                                    Offset="1.0" />
                    </GradientStopCollection>
                  </GradientBrush.GradientStops>
                </LinearGradientBrush>

              </Setter.Value>
            </Setter>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Si noti che in questo esempio fa riferimento a risorse che non sono riportate di seguito. Per l'esempio completo, vedere Styling with ControlTemplates Sample. Questo esempio vengono forniti esempi di modelli di controllo per molti controlli ed è il modo migliore per iniziare a utilizzare la creazione di modelli di controllo.

.NET Framework
Disponibile da 3.0
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: