이 설명서는 보관되지만 유지 되지 않습니다.

방법: RichTextBox의 기본 콘텐츠 호스트 바꾸기

업데이트: 2007년 11월

이 예제에서는 WPF(Windows Presentation Foundation) 스타일을 사용하여 RichTextBox의 기본 콘텐츠 호스트를 바꾸는 방법을 보여 줍니다.

콘텐츠 호스트RichTextBox의 콘텐츠를 렌더링하는 요소입니다. RichTextBox의 기본 컨트롤 템플릿에는 ScrollViewer가 콘텐츠 호스트로 지정되어 있습니다.

ScrollViewer가 제공하는 스크롤 기능을 사용하지 않으려는 경우 또는 이 기능이 필요하지 않은 경우에는 이보다 간단한 AdornerDecorator 요소를 RichTextBox의 콘텐츠 호스트로 지정할 수 있습니다. ScrollViewerAdornerDecorator는 콘텐츠 호스트로 지원되는 유일한 요소입니다.

이 예제를 보여 주는 작업 샘플은 RichTextBox의 기본 콘텐츠 호스트 바꾸기 샘플을 참조하십시오.

RichTextBoxControlTemplate에는 콘텐츠 호스트 요소로 태그가 지정된 요소가 정확히 하나 있어야 합니다. 요소에 콘텐츠 호스트로 태그를 지정하려면 특수한 이름인 PART_ContentHost를 할당합니다. 콘텐츠 호스트 요소는 ScrollViewer 또는 AdornerDecorator여야 합니다. 콘텐츠 호스트 요소가 자식 요소를 전혀 호스팅하지 않을 수도 있습니다.

다음 XAML(Extensible Application Markup Language) 예제에서는 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 예제에서는 스타일의 x:Key 특성에 대한 정적 리소스 참조와 함께 Style 특성을 통해 위에 선언된 스타일을 사용하는 RichTextBox를 정의합니다.

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


표시: