如何在UI中呈现DataTemplate

时间:2014-05-13 20:59:46

标签: c# wpf windows-phone datatemplate

在.NET / WP / WPF中,我希望创建我的第一个用户控件,它将使用DataTemplate呈现内容,并且想知道如何做到这一点。我是否需要使用内容演示者并将其传递给模板或什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

将模板化内容包含在其他固定内容中的基本策略(如UserControl的XAML)是在包含控件上定义一组Content属性(为DependencyProperties)然后添加ContentPresenter(带有适当的绑定)作为将注入内容的占位符。在框架中,您可以在HeaderedContentControl中看到一个示例,其中包含一个普通的Content属性集,还有一组并行的Header属性,用作第二个内容

您可以在控件上定义的属性(因平台而异)是:

  • Content
  • ContentTemplate
  • ContentTemplateSelector
  • ContentStringFormat

用你的自定义名称替换每个中的“内容”。在你的情况下,你可能只有前两个。然后在UserControl布局(实际上定义UserControl的内容本身)中,只需放置ContentPresenter并将其设置为使用自定义属性,控件本身为{{ 1}}(Binding SourceElementName或将RelativeSource设置在DataContext本身的某处):

UserControl

在大多数情况下(但不是这里) <ContentPresenter Content="{Binding ElementName=MyControl, Path=MyExtraContent}" ContentTemplate="{Binding ElementName=MyControl, Path=MyExtraContentTemplate}" /> ContentPresenter中使用,您可以使用内置的快捷方式为您绑定所有内容属性:

ControlTemplate

您可以使用<ContentPresenter ContentSource="MyExtraContent"/> 获得相同的效果,但它会为您的可视树添加额外的元素,因为它基本上只是包含ContentControl的{​​{1}},它会传递所有属性。它允许您添加一些视觉差异,例如ContentTemplateContentPresenter,或者添加整个自定义模板,但在这种情况下,只需添加其他控件{{{{{{ 1}}。