Share via


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

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'un RichTextBox.

L'hôte de contenu est l'élément qui restitue le contenu du RichTextBox. Le modèle de contrôle par défaut d'un RichTextBox spécifie un ScrollViewer comme hôte de contenu.

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 un RichTextBox. ScrollViewer et AdornerDecorator sont les seuls éléments pris en charge pour l'hôte de contenu.

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

Exemple

Le ControlTemplate d'un RichTextBox 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'un RichTextBox. Ce style est compatible avec les éléments qui descendent 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 un RichTextBox 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.

<RichTextBox
  Grid.Column="0"

  VerticalScrollBarVisibility="Auto"
  HorizontalScrollBarVisibility="Auto"

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

Voir aussi

Concepts

Vue d'ensemble de RichTextBox

Vue d'ensemble de TextBox

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