除了@nit 所说, a 的内容ContentControl
没有内部自我连接。相反,它们通常在其他控件中使用,其中它们的Content
属性是绑定到父控件属性的数据......这可能使它看起来自动工作:
<ControlTemplate x:Key="DataGridCellWrapTemplate" TargetType="{x:Type DataGridCell}">
<Border Name="DataGridCellBorder">
<ContentControl Content="{TemplateBinding Content}" />
</Border>
</ControlTemplate>
在这种情况下,ContentControl.Content
属性是绑定到属性的内部数据DataGridCell.Content
。这意味着设置为Content
of 的任何内容DataGridCell
都将显示在 this 中ContentControl
。
您可以将 aContentControl
视为“数据持有者”,尽管这不一定是数据绑定数据。我们(大部分)习惯于创建DataTemplate
s 来定义我们的集合控件中的数据对象应该是什么样子。您可以将其想象为ContentControl
集合中的每个项目都有一个。
从这里开始,这意味着如果可以使用 aDataTemplate
来定义每个集合项的外观,我们还可以使用 one 来定义 a 中的单个项的ContentControl
外观:
<ContentControl Content="{Binding SomeDataObject}"
ContentTemplate="{StaticResource SomeDataTemplateToDefineWhatTheDataLooksLike}" />
当然,如果我们声明了DataTemplate
相关类型的 a 而没有设置x:Key
属性,那么我们可以省略ContentTemplate
属性的设置。因此ContentControl
,这对于使用相同的 显示集合中的一个项目很有用DataTempate
。
为了解决您的评论,那将是因为Style
aContentControl
使用的“有限默认值”。有关更多信息,我建议您查看 MSDN 上的ContentControl Class页面...从该页面:
ContentControl 具有有限的默认样式。如果要增强控件的外观,可以创建一个新的 DataTemplate。