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

Mise à jour : novembre 2007

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/xaml/presentation

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
public class ControlTemplate : FrameworkTemplate
/** @attribute LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable) */
public class ControlTemplate extends FrameworkTemplate
public class ControlTemplate extends FrameworkTemplate
<ControlTemplate>
  VisualTree
</ControlTemplate>

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 la 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 
          x:Name="Border"  
          CornerRadius="2" 
          BorderThickness="1"
          Background="{StaticResource NormalBrush}"
          BorderBrush="{StaticResource NormalBorderBrush}">
          <ContentPresenter 
            Margin="2"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            RecognizesAccessKey="True"/>
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsKeyboardFocused" Value="true">
            <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DefaultedBorderBrush}" />
          </Trigger>
          <Trigger Property="IsDefaulted" Value="true">
            <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DefaultedBorderBrush}" />
          </Trigger>
          <Trigger Property="IsMouseOver" Value="true">
            <Setter TargetName="Border" Property="Background" Value="{StaticResource DarkBrush}" />
          </Trigger>
          <Trigger Property="IsPressed" Value="true">
            <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}" />
            <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource PressedBorderBrush}" />
          </Trigger>
          <Trigger Property="IsEnabled" Value="false">
            <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" />
            <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" />
            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
          </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.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

© 2013 Microsoft. Tous droits réservés.