Condividi tramite


Procedura: sostituire l'host di contenuto predefinito per un oggetto RichTextBox

Aggiornamento: novembre 2007

In questo esempio viene mostrato come utilizzare gli stili di Windows Presentation Foundation (WPF) per sostituire l'host di contenuto predefinito per RichTextBox.

L'host di contenuto è l'elemento che esegue il rendering del contenuto dell'oggetto RichTextBox. Il modello di controllo predefinito per un oggetto RichTextBox specifica un oggetto ScrollViewer come host di contenuto.

Nei casi in cui le funzionalità di scorrimento fornite da un oggetto ScrollViewer, non siano desiderate o necessarie, è possibile specificare un elemento AdornerDecorator più semplice come host di contenuto per un oggetto RichTextBox. ScrollViewer e AdornerDecorator sono gli unici elementi supportati soli per l'host di contenuto.

Per un esempio pratico, vedere Esempio di sostituzione dell'host di contenuto predefinito per un oggetto RichTextBox.

Esempio

Nell'oggetto ControlTemplate per un oggetto RichTextBox deve essere contenuto esattamente un elemento contrassegnato come elemento host di contenuto. Per contrassegnare un elemento come host di contenuto, assegnargli il nome speciale PART_ContentHost. L'elemento host di contenuto deve essere un oggetto ScrollViewer o un oggetto AdornerDecorator. È possibile che l'elemento host di contenuto non ospiti elementi figlio.

Nell'esempio Extensible Application Markup Language (XAML) seguente viene definito uno stile che esegue l'override del modello di controllo predefinito per un oggetto RichTextBox. Questo stile è compatibile con gli elementi che derivano da TextBoxBase. Nell'esempio, un oggetto AdornerDecorator viene specificato come host di contenuto.

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

Nell'esempio XAML seguente viene definito un oggetto RichTextBox che utilizza lo stile dichiarato in precedenza tramite l'attributo Style e un riferimento di risorsa statico all'attributo Attributo x:Key dello stile.

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

Vedere anche

Concetti

Cenni generali sul controllo RichTextBox

Cenni preliminari sulla classe TextBox

Applicazione di stili e modelli