정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

ContentControl.ContentTemplate 속성

2013-12-13

ContentControl의 콘텐츠를 표시하는 데 사용되는 데이터 템플릿을 가져오거나 설정합니다.

Namespace:  System.Windows.Controls
어셈블리:  System.Windows(System.Windows.dll)
XMLNS for XAML: xmlns에 매핑되지 않습니다.

public DataTemplate ContentTemplate { get; set; }
<contentControl>
  <contentControl.ContentTemplate>
    dataTemplate
  </contentControl.ContentTemplate>
</contentControl>
<contentControl ContentTemplate="templateReference"/>

XAML 값

dataTemplate

ContentControl의 표시를 정의하는 DataTemplate 개체 요소입니다. 자세한 내용은 Windows Phone의 데이터 바인딩을 참조하세요.

templateReference

기존 DataTemplate 정의에 대한 StaticResource 참조입니다. 자세한 내용은 [6b650743-0e38-420e-a328-5d5f008779a6#markup_extensions]을 참조하세요.

기존 템플릿을 리소스로 참조하는 것이 아니라 템플릿을 인라인으로 정의하는 방식도 유용한 시나리오이기 때문에 ContentTemplate에 대한 특성 및 속성 요소 구문을 모두 설명합니다.

속성 값

형식: System.Windows.DataTemplate
ContentControl의 콘텐츠를 표시하는 데 사용되는 데이터 템플릿입니다.

종속성 속성 식별자 필드: ContentTemplateProperty

여러 ContentControl 개체에서 동일한 UIElement 개체를 사용하려면 ContentTemplate 속성을 설정합니다. 예를 들어, 응용프로그램의 여러 버튼에 동일한 그래픽을 사용한다고 가정합니다. 이 경우 그래픽을 포함하는 DataTemplate을 만들고 이를 버튼의 ContentTemplate으로 사용합니다. 버튼에 공유되는 요소와 고유한 콘텐츠를 모두 포함하려면 ContentPresenterDataTemplate에 추가하고 Content 속성에서 TemplateBinding 태그 확장을 사용하여 고유한 콘텐츠의 위치를 지정하면 됩니다. 자세한 내용은 [6b650743-0e38-420e-a328-5d5f008779a6#markup_extensions]을 참조하세요.

ContentTemplateContentControl의 인스턴스에서 직접 설정할 수도 있지만 주로 스타일에서 설정합니다.

다음 예제에서는 Style에서 ButtonContentTemplate을 설정하여 동일한 그래픽을 표시하는 세 개의 버튼을 만듭니다.


<StackPanel Orientation="Horizontal">
  <StackPanel.Resources>
    <Style x:Key="ArrowButton" TargetType="Button">
      <Setter Property="Margin" Value="5"/>
      <Setter Property="Width" Value="50"/>
      <Setter Property="Height" Value="20"/>
      <Setter Property="ContentTemplate">
        <Setter.Value>
          <DataTemplate>
            <Grid Height="8" Width="8">
              <Path HorizontalAlignment="Stretch" 
                      Margin="0,0,1.8,1.8" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FF000000" 
                      Data="M0.5,5.7 L0.5,0.5 L5.7,0.5"/>
              <Path HorizontalAlignment="Stretch" 
                      Margin="2,3,0,0" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FFFFFFFF" 
                      Data="M3.2,7.5 L7.5,7.5 L7.5,3.5"/>
              <Path HorizontalAlignment="Stretch" 
                      Margin="1.2,1.4,0.7,0.7" 
                      VerticalAlignment="Stretch" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" 
                      Data="M2.5,2.5 L7.5,7.5"/>
              <Path HorizontalAlignment="Stretch" 
                      Margin="1.7,2.0,1,1" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FF000000" 
                      Data="M3,7.5 L7.5,7.5 L7.5,3.5"/>
              <Path HorizontalAlignment="Stretch" 
                      Margin="1,1,1,1" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FFFFFFFF" 
                      Data="M1.5,6.5 L1.5,1 L6.5,1.5"/>
            </Grid>
          </DataTemplate>
        </Setter.Value>
      </Setter>
    </Style>

  </StackPanel.Resources>
  <Button Style="{StaticResource ArrowButton}"></Button>
  <Button Style="{StaticResource ArrowButton}"></Button>
  <Button Style="{StaticResource ArrowButton}"></Button>
</StackPanel>


앞의 예제에서는 다음 그림과 유사한 출력을 생성합니다.

동일한 그래픽이 있는 버튼

Three buttons that have the same content.

다음 예제에서는 동일한 그래픽과 서로 다른 콘텐츠를 표시하는 세 개의 버튼을 만듭니다. DataTemplateContentPresenter가 들어 있기 때문에 이들 버튼에는 공유되는 그래픽과 고유한 콘텐츠가 포함될 수 있습니다.


<StackPanel Orientation="Horizontal">
  <StackPanel.Resources>
    <Style x:Key="ArrowButton" TargetType="Button">
      <Setter Property="Margin" Value="5"/>
      <Setter Property="Width" Value="50"/>
      <Setter Property="Height" Value="20"/>
      <Setter Property="ContentTemplate">
        <Setter.Value>
          <DataTemplate>
            <StackPanel Orientation="Horizontal">
              <Grid Height="8" Width="8">
                <Path HorizontalAlignment="Stretch" 
                      Margin="0,0,1.8,1.8" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FF000000" 
                      Data="M0.5,5.7 L0.5,0.5 L5.7,0.5"/>
                <Path HorizontalAlignment="Stretch" 
                      Margin="2,3,0,0" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FFFFFFFF" 
                      Data="M3.2,7.5 L7.5,7.5 L7.5,3.5"/>
                <Path HorizontalAlignment="Stretch" 
                      Margin="1.2,1.4,0.7,0.7" 
                      VerticalAlignment="Stretch" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" 
                      Data="M2.5,2.5 L7.5,7.5"/>
                <Path HorizontalAlignment="Stretch" 
                      Margin="1.7,2.0,1,1" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FF000000" 
                      Data="M3,7.5 L7.5,7.5 L7.5,3.5"/>
                <Path HorizontalAlignment="Stretch" 
                      Margin="1,1,1,1" 
                      VerticalAlignment="Stretch" Stretch="Fill" Stroke="#FFFFFFFF" 
                      Data="M1.5,6.5 L1.5,1 L6.5,1.5"/>
              </Grid>
              <ContentPresenter Content="{Binding}"/>
            </StackPanel>
          </DataTemplate>
        </Setter.Value>
      </Setter>
    </Style>

  </StackPanel.Resources>
  <Button Style="{StaticResource ArrowButton}" Content="1"></Button>
  <Button Style="{StaticResource ArrowButton}" Content="2"></Button>
  <Button Style="{StaticResource ArrowButton}" Content="3"></Button>
</StackPanel>


앞의 예제에서는 다음 그림과 유사한 출력을 생성합니다.

동일한 그래픽과 고유한 콘텐츠가 포함된 버튼

Three buttons that have shared and unique content.

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: