Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

ControlTemplate, classe

Spécifie la structure visuelle et les aspects comportementaux d'un Control qui peuvent être partagés par plusieurs instances du contrôle.

Espace de noms :  System.Windows.Controls
Assembly :  PresentationFramework (dans PresentationFramework.dll)
XMLNS pour 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>

Valeurs XAML

ControlTemplate

Élément objet pour ControlTemplate ou une classe dérivée.

VisualTreeRootNode

Élément XAML unique servant d'enfant immédiat de la ControlTemplate (ou d'une classe dérivée). Les modèles doivent avoir un seul nœud racine. Afin de générer un modèle utile, l'élément choisi en tant que VisualTreeRootNode est supposé prendre en charge un modèle de contenu propre, souvent un modèle qui prend en charge plusieurs éléments enfants.

VisualTreeNodeContents

Un ou plusieurs éléments qui complètent le modèle prévu. Si l'élément choisi en tant que VisualTreeRootNode prend uniquement en charge un seul enfant, il ne peut y avoir qu'un seul élément déclaré comme VisualTreeNodeContents. Il est également possible (bien que rare) de fournir du contenu sous forme de texte si l'objet VisualTreeRootNode choisi prend en charge une propriété de contenu textuel.

Le type ControlTemplate expose les membres suivants.

  NomDescription
Méthode publiqueControlTemplate()Initialise une nouvelle instance de la classe ControlTemplate.
Méthode publiqueControlTemplate(Type)Initialise une nouvelle instance de la classe ControlTemplate à l'aide du type de cible spécifié.
Début
  NomDescription
Propriété publiqueDispatcherObtient le Dispatcher associé à DispatcherObject. (Hérité de DispatcherObject.)
Propriété publiqueHasContentObtient une valeur qui indique si ce modèle a optimisé le contenu. (Hérité de FrameworkTemplate.)
Propriété publiqueIsSealedObtient une valeur qui indique si cet objet est dans un état immuable (c'est-à-dire qu'il ne peut pas être modifié). (Hérité de FrameworkTemplate.)
Propriété publiqueResourcesObtient ou définit la collection des ressources qui peuvent être utilisées dans la portée de ce modèle. (Hérité de FrameworkTemplate.)
Propriété publiqueTargetTypeObtient ou définit le type auquel ControlTemplate est destiné.
Propriété publiqueTemplateObtient ou définit une référence à l'objet qui enregistre ou lit les nœuds XAML pour le modèle lorsque le modèle est défini ou appliqué par un writer. (Hérité de FrameworkTemplate.)
Propriété publiqueTriggersObtient une collection d'objets TriggerBase qui appliquent des modifications de propriété ou effectuent des actions selon des conditions spécifiées.
Propriété publiqueVisualTreeObtient ou définit le nœud racine du modèle. (Hérité de FrameworkTemplate.)
Début
  NomDescription
Méthode publiqueCheckAccessDétermine si le thread appelant a accès à ce DispatcherObject. (Hérité de DispatcherObject.)
Méthode publiqueEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéeFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiqueFindNameRecherche l'élément associé au nom spécifié défini dans ce modèle. (Hérité de FrameworkTemplate.)
Méthode publiqueGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueLoadContentCharge le contenu du modèle en tant qu'instance d'un objet et retourne l'élément racine du contenu. (Hérité de FrameworkTemplate.)
Méthode protégéeMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiqueRegisterNameInscrit une nouvelle paire nom-objet dans la portée de nom active. (Hérité de FrameworkTemplate.)
Méthode publiqueSealVerrouille le modèle de façon à ce qu'il ne puisse pas être modifié. (Hérité de FrameworkTemplate.)
Méthode publiqueShouldSerializeResourcesRetourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété Resources sur les instances de cette classe. (Hérité de FrameworkTemplate.)
Méthode publiqueShouldSerializeVisualTreeRetourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété VisualTree sur les instances de cette classe. (Hérité de FrameworkTemplate.)
Méthode publiqueToStringRetourne une chaîne qui représente l'objet actif. (Hérité de Object.)
Méthode publiqueUnregisterNameSupprime un mappage nom/objet de la portée de nom XAML. (Hérité de FrameworkTemplate.)
Méthode protégéeValidateTemplatedParentVérifie le parent basé sur des modèles par rapport à un ensemble de règles. (Substitue FrameworkTemplate.ValidateTemplatedParent(FrameworkElement).)
Méthode publiqueVerifyAccessGarantit que le thread appelant a accès à DispatcherObject. (Hérité de DispatcherObject.)
Début
  NomDescription
Implémentation d'interface expliciteMéthode privéeINameScope.FindNameInfrastructure. Retourne un objet qui porte le nom d'identification fourni. (Hérité de FrameworkTemplate.)
Implémentation d'interface expliciteMéthode privéeIQueryAmbient.IsAmbientPropertyAvailableDemande si une propriété ambiante spécifiée est disponible dans la portée actuelle. (Hérité de FrameworkTemplate.)
Début

ControlTemplate vous permet de spécifier la structure visuelle d'un contrôle. L'auteur du contrôle peut définir le modèle ControlTemplate par défaut, tandis que l'auteur de l'application peut substituer ce modèle ControlTemplate afin de reconstruire la structure visuelle du contrôle.

La création de modèles de contrôle est l'une des fonctionnalités proposées par le modèle WPF de création de styles et de modèles. Ce modèle vous offre une flexibilité exceptionnelle qui vous évite, dans de nombreux cas, d'avoir à écrire vos propres contrôles. Si vous êtes l'auteur d'une application et désirez modifier la visualisation de votre contrôle ou remplacer le modèle ControlTemplate d'un contrôle existant, consultez la rubrique Application d'un style et création de modèles pour obtenir des exemples ainsi qu'une description détaillée de ces procédures.

Si vous écrivez votre propre contrôle, consultez la rubrique relative à la création d'un contrôle personnalisé dans Vue d'ensemble de la création de contrôles.

Un ControlTemplate est conçu comme une unité indépendante de détail d'implémentation, invisible aux utilisateurs extérieurs et aux objets, y compris les styles. La seule façon de manipuler le contenu du modèle de contrôle est de le faire à partir du même modèle de contrôle.

L'exemple suivant montre un Style de Button qui permet de définir le ControlTemplate d'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>


Une fois ces paramètres appliqués, le Button prend la forme d'une Ellipse:

exemple de ControlTemplate de bouton

Si vous affectez à la propriété Template d'un Control un nouveau ControlTemplate, comme dans l'exemple ci-dessus, le modèle complet est remplacé. La forme que prend le Button lorsqu'il bénéficie du focus ou lorsqu'il est enfoncé fait partie de l'apparence par défaut du bouton que vous remplacez. Par conséquent, selon vos besoins, vous pouvez indiquer dans votre définition la forme que doit prendre votre bouton lorsqu'il est enfoncé, etc., comme dans l'exemple suivant :


<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>


Notez que cet exemple fait référence à des ressources qui ne sont pas mentionnées ici. Pour l'exemple complet, consultez Style avec ControlTemplates, exemple. Cet exemple contient des exemples de modèles de contrôle pour de nombreux contrôles et représente pour vous la meilleure introduction avant de vous lancer dans la création de modèles de contrôle.

.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tout membre static (Shared en Visual Basic) public de ce type est thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

Afficher:
© 2014 Microsoft. Tous droits réservés.