导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

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

一个 DataTemplate 对象元素,定义该 ContentControl 的显示。 有关更多信息,请参见Windows Phone 的数据绑定

templateReference

对现有 DataTemplate 定义的 StaticResource 引用。 有关更多信息,请参见[6b650743-0e38-420e-a328-5d5f008779a6#markup_extensions]

由于以内联方式定义模板与引用一个现有模板作为资源是同样有效的方案,因此显示 ContentTemplate 的属性 (Attribute) 和属性 (Property) 这两种元素语法。

属性值

类型: System.Windows.DataTemplate
用于显示 ContentControl 内容的数据模板。

依赖项属性标识符字段: ContentTemplateProperty

如果希望多个 ContentControl 对象使用相同的 UIElement 对象,请设置 ContentTemplate 属性。 例如,假设需要应用程序上的多个按钮具有相同的图形。 可以创建一个包含此图形的 DataTemplate,并将它用作这些按钮的 ContentTemplate。 如果希望按钮既包含共享元素,又包含独特内容,则可以向 DataTemplate 中添加一个 ContentPresenter,并使用 Content 属性上的 TemplateBinding 标记扩展来指定独特内容的位置。 有关更多信息,请参见[6b650743-0e38-420e-a328-5d5f008779a6#markup_extensions]

尽管可以直接在 ContentControl 的实例上设置 ContentTemplate,但通常在样式中设置它。

下面的示例通过以 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.

下面的示例创建三个按钮,它们显示的图形相同,但内容不同。 这些按钮可以具有独特内容和共享图形的原因在于 DataTemplate 包含一个 ContentPresenter


<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

显示:
© 2014 Microsoft