Partager via


Comment : remplacer l'hôte de contenu par défaut d'un TextBox

Mise à jour : novembre 2007

Cet exemple montre comment utiliser des styles Windows Presentation Foundation (WPF) pour remplacer l'hôte de contenu par défaut d'une TextBox.

L'hôte de contenu est l'élément qui restitue le contenu de la TextBox. Le modèle de contrôle par défaut d'une TextBox spécifie un ScrollViewer comme hôte de contenu. Pour un exemple du modèle de contrôle par défaut d'une TextBox, consultez TextBox ControlTemplate, exemple.

Dans le cas où les fonctions de défilement fournies par un ScrollViewer sont indésirables ou inutiles, un élément AdornerDecorator allégé peut être spécifié comme hôte de contenu pour une TextBox.

Pour un exemple pratique à ce sujet, consultez Remplacer l'hôte de contenu par défaut d'un TextBox, exemple.

Exemple

Le ControlTemplate d'une TextBox doit contenir exactement un élément balisé comme contenu d'élément hôte. Pour baliser un élément comme hôte de contenu, assignez-lui le nom spécial PART_ContentHost. L'élément de l'hôte de contenu doit être un ScrollViewer ou un AdornerDecorator. L'élément de l'hôte de contenu ne peut pas héberger d'éléments enfants.

L'exemple XAML (Extensible Application Markup Language) suivant définit un style qui remplace le modèle de contrôle par défaut d'une TextBox. Ce style est compatible avec les éléments descendant de TextBoxBase. Dans l'exemple, un AdornerDecorator est spécifié comme hôte de contenu.

<Window.Resources>
  <Style x:Key="TextBoxNoScrollViewer" TargetType="{x:Type TextBoxBase}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TextBoxBase}">
          <Border 
            CornerRadius="2" 
            Background="{TemplateBinding Background}" 
            BorderThickness="{TemplateBinding BorderThickness}" 
            BorderBrush="{TemplateBinding BorderBrush}"  
          >
            <!-- 
            The control template for a TextBox or RichTextBox must
            include an element tagged as the content host.  An element is 
            tagged as the content host element when it has the special name
            PART_ContentHost.  The content host element must be a ScrollViewer,
            or an element that derives from Decorator.  
            -->
            <AdornerDecorator 
              x:Name="PART_ContentHost"
              Focusable="False" 
            />
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</Window.Resources>

L'exemple XAML suivant définit une TextBox qui utilise le style déclaré précédemment à l'aide de l'attribut Style associé à une référence de ressource statique x:Key, attribut du style.

<TextBox
  Grid.Column="0"

  AcceptsReturn="True"
  AcceptsTab="True"
  TextWrapping="Wrap" 

  VerticalScrollBarVisibility="Auto"
  HorizontalScrollBarVisibility="Auto"

  Style="{StaticResource TextBoxNoScrollViewer}"
>
  TextBox styled not to use a ScrollViewer as the content host.
</TextBox>

Voir aussi

Concepts

Vue d'ensemble de TextBox

Vue d'ensemble de RichTextBox

Application d'un style et création de modèles