共用方式為


HOW TO:取代 RichTextBox 的預設內容裝載

更新:2007 年 11 月

本範例顯示如何使用 Windows Presentation Foundation (WPF) 樣式取代 RichTextBox 的預設內容裝載。

「內容裝載」是轉譯 RichTextBox 內容的項目。RichTextBox 的預設控制項樣板會指定 ScrollViewer 做為內容裝載。

在不想要或不需要 ScrollViewer 所提供的捲動功能的情況下,輕量型的 AdornerDecorator 項目可以指定做為 RichTextBox 的內容裝載。ScrollViewerAdornerDecorator 是內容裝載唯一支援的項目。

如需示範這個範例的運作範例,請參閱取代 RichTextBox 的預設內容裝載範例

範例

RichTextBoxControlTemplate 必須包含正好一個標記為內容裝載項目的項目。若要將項目標記為內容裝載,請指派特殊名稱 PART_ContentHost。內容裝載項目必須是 ScrollViewerAdornerDecorator。內容裝載項目無法裝載任何子項目。

下列可延伸標記語言 (XAML) 範例定義的樣式會覆寫 RichTextBox 的預設控制項樣板。這個樣式與 TextBoxBase 的子代項目相容。範例中的 AdornerDecorator 指定為內容裝載。

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

下列 XAML 範例定義的 RichTextBox 會利用先前宣告的樣式,方法是使用 Style 屬性再加上對樣式 x:Key 屬性的靜態資源參考。

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

請參閱

概念

RichTextBox 概觀

TextBox 概觀

設定樣式和範本