我对此很困惑,这两者似乎都影响tabcontrol中tabitems的呈现。它是否设计用于最佳控制tabcontrol的显示?或者,如果有我不明白的事情。
该ItemsControl.ItemTemplate
物业是用来定义绑定收集数据的每个项目应该是什么样子......从ItemsControl.ItemTemplate
属性上的MSDN页面:
获取或设置用于显示每个项目的DataTemplate。
如您所见,它的类型DataTemplate
是,用于显示数据的模板是惯用的……DataContext
它将自动设置为集合中的一个项目,因此在其中声明的控件DataTemplate
将自动访问items属性。请参阅MSDN上的“数据模板概述”页面以获取与此相关的更多帮助。
同样,从MSDN,该ContentControl.ContentTemplate
Property:
获取或设置用于显示的内容的数据模板
ContentControl
。
同样,其DataContext
将自动设置为设置为Content
属性的对象。请注意,ContentControl
只有一个ContentTemplate
属性有一个属性,没有ItemTemplate
属性,它用于收集项目... MSDN上的“数据模板概述”页面中:
由于myTaskTemplate是一种资源,因此您现在可以在具有采用DataTemplate类型的属性的其他控件上使用它。如上所示,对于ItemsControl对象(例如ListBox),它是ItemTemplate属性。对于ContentControl对象,它是ContentTemplate属性。
更新>>>
为了进一步阐明这种情况,请考虑以下简单规则:
使用该
ContentTemplate
属性定义设置为Content
a的对象的ContentControl
外观。使用
ItemTemplate
属性来定义如何项目集合控制的应该看看。
区别最简单。但是,我想指出的是,由于这些属性都是type DataTemplate
,它们的值是可以互换的。
例如,假设您有一个Person
类,并且在中显示了一个Person
对象集合ListBox
。您可以声明一个DataTemplate
setListBox.ItemTemplate
属性作为属性,以定义Person
集合中每个属性的外观。但是,如果您只想显示一个Person
,则可以ContentControl
将Content
set与set一起使用到Person
该类的实例,并且仍然使用same DataTemplate
,但是将set设置为ContentTemplate
代替:
多个对象:
<ListBox ItemsSource="{Binding People}" ItemTemplate="{StaticResource Template}" ... />
...
单个对象:
<ContentControl Content="{Binding Person}"
ContentTemplate="{StaticResource Template}" ... />
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句