Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe ControlTemplate

Specifica la struttura visuale e gli aspetti comportamentali di un oggetto Control che può essere condiviso tra più istanze del controllo.

Spazio dei nomi:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

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

Valor XAML

ControlTemplate

Elemento oggetto per ControlTemplate o una classe derivata.

VisualTreeRootNode

un singolo XAML elemento come figlio immediato di ControlTemplate (o una classe derivata. I modelli devono avere un solo nodo radice. Per generare un modello utile, l'elemento scelto come VisualTreeRootNode è previsto per supportare un modello di contenuto dei propri, spesso un modello elementi figlio di che supporta più.

VisualTreeNodeContents

uno o più elementi che completano il modello desiderato. Se l'elemento scelto come VisualTreeRootNode supporta un solo elemento figlio, pertanto può esistere un solo elemento dichiarato come VisualTreeNodeContents. È anche possibile (sebbene spesso) fornire il contenuto di testo se viene scelto VisualTreeRootNode supporta una proprietà di contenuto di testo.

Il tipo ControlTemplate espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoControlTemplate()Inizializza una nuova istanza di ControlTemplate classe.
Metodo pubblicoControlTemplate(Type)Inizializza una nuova istanza di ControlTemplate classe con il tipo di destinazione specificato.
In alto

  NomeDescrizione
Proprietà pubblicaDispatcher ottiene l'oggetto Dispatcher al quale l'oggetto DispatcherObject è associato. (Ereditato da DispatcherObject)
Proprietà pubblicaHasContentOttiene un valore che indica se questo modello ottimizzato il contenuto. (Ereditato da FrameworkTemplate)
Proprietà pubblicaIsSealedOttiene un valore che indica se l'oggetto si trova in uno stato non modificabile in modo da non può essere modificato. (Ereditato da FrameworkTemplate)
Proprietà pubblicaResourcesOttiene o imposta l'esazione risorse che possono essere utilizzate con questo modello. (Ereditato da FrameworkTemplate)
Proprietà pubblicaTargetTypeottiene o imposta il tipo per il quale questo ControlTemplate è previsto.
Proprietà pubblicaTemplateOttiene o imposta un riferimento all'oggetto che record o riproduce i nodi XAML per il modello quando il modello viene definito o applicato da un writer. (Ereditato da FrameworkTemplate)
Proprietà pubblicaTriggersOttiene una raccolta di TriggerBase oggetti che implementano le modifiche delle proprietà o eseguono azioni in base alle condizioni specificate.
Proprietà pubblicaVisualTreeOttiene o imposta il nodo radice del modello. (Ereditato da FrameworkTemplate)
In alto

  NomeDescrizione
Metodo pubblicoCheckAccessdetermina se il thread chiamante ha accesso a questo DispatcherObject. (Ereditato da DispatcherObject)
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoFindNameTrova l'elemento associato con il nome specificato definito nel modello. (Ereditato da FrameworkTemplate)
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoLoadContentCarica il contenuto del modello come istanza di un oggetto e restituisce l'elemento radice di contenuto. (Ereditato da FrameworkTemplate)
Metodo protettoMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoRegisterNameRegistra una nuova coppia oggetto di nome/nell'ambito corrente del nome. (Ereditato da FrameworkTemplate)
Metodo pubblicoSealBlocca il modello in modo da non può essere modificato. (Ereditato da FrameworkTemplate)
Metodo pubblicoShouldSerializeResourcesRestituisce un valore che indica se i processi di serializzazione deve serializzare il valore di Resources proprietà nelle istanze di questa classe. (Ereditato da FrameworkTemplate)
Metodo pubblicoShouldSerializeVisualTreeRestituisce un valore che indica se i processi di serializzazione deve serializzare il valore di VisualTree proprietà nelle istanze di questa classe. (Ereditato da FrameworkTemplate)
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblicoUnregisterNameRimuove un nome/oggetto che esegue il mapping dai NameScope XAML. (Ereditato da FrameworkTemplate)
Metodo protettoValidateTemplatedParentControlla il padre basato su modelli rispetto a un set di regole. (Esegue l'override di FrameworkTemplate.ValidateTemplatedParent(FrameworkElement)).
Metodo pubblicoVerifyAccess Impone che il thread chiamante abbia accesso a questo DispatcherObject. (Ereditato da DispatcherObject)
In alto

  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privatoINameScope.FindNameInfrastruttura. Restituisce un oggetto con il nome di identificazione fornito. (Ereditato da FrameworkTemplate)
Implementazione esplicita dell'interfacciaMetodo privatoIQueryAmbient.IsAmbientPropertyAvailableEseguire una query se una proprietà di ambiente specificata è disponibile nell'ambito corrente. (Ereditato da FrameworkTemplate)
In alto

ControlTemplate consente di specificare la struttura visuale di un controllo. L'autore dei controlli può definire l'impostazione predefinita ControlTemplate e l'autore dell'applicazione possibile eseguire l'override ControlTemplate per ricostruire la struttura visuale del controllo.

Il controllo di modelli è una delle numerose funzionalità offerte da WPF modello di applicazione di stili e modelli. Il modello di applicazione di stili e modelli offre tale notevole flessibilità che in molti casi non è necessario scrivere per contenere i controlli. Se si è un autore dell'applicazione che desidera modificare la visualizzazione del controllo o sostituzione ControlTemplate di un controllo esistente, vedere Applicazione di stili e modelli argomento per esempi e informazioni più dettagliate.

Se si sta scrivendo il proprio controllo, vedere “per creare un controllo personalizzato„ in Cenni preliminari sulla modifica di controlli.

In ControlTemplate deve essere un'unità autonoma dettaglio di implementazione che sia invisibile agli utenti esterni e agli oggetti, inclusi stili. L'unico modo per modificare il contenuto del modello di controllo è l'interno dello stesso modello.

Di seguito viene illustrato come Button Style tale imposta ControlTemplate la proprietà di un oggetto 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 questo viene applicato, Button viene visualizzato come Ellipse:

Esempio di ControlTemplate del pulsante

Quando si imposta Template proprietà di un oggetto Control in un nuovo ControlTemplate analogamente all'esempio precedente, si sta sostituendo l'intero modello. Cosa Button è simile a quando è dello stato attivo o preme è una parte l'aspetto predefinito del pulsante che si sta sostituendo. Di conseguenza, a seconda delle esigenze, può essere necessario inserire la definizione che il pulsante dovrebbe essere ad esempio quando viene premuto, e così via, come nel seguente esempio:


<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 risorse riferimenti di questo esempio non sono mostrate. per l'esempio completo, vedere Disegno con l'esempio di ControlTemplates. Nell'esempio vengono forniti esempi di modelli di controlli per molti controlli e rappresenta la soluzione ottimale per inizi con la creazione di modelli di controllo.

.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft