WPF:TabControl.ItemTemplate和TabItem.ContentTemplate之间的区别

安德鲁·卡尔

我对此很困惑,这两者似乎都影响tabcontrol中tabitems的呈现。它是否设计用于最佳控制tabcontrol的显示?或者,如果有我不明白的事情。

谢里登

ItemsControl.ItemTemplate物业是用来定义绑定收集数据的每个项目应该是什么样子......从ItemsControl.ItemTemplate属性上的MSDN页面:

获取或设置用于显示每个项目的DataTemplate。

如您所见,它的类型DataTemplate是,用于显示数据的模板是惯用的……DataContext它将自动设置为集合中的一个项目,因此在其中声明的控件DataTemplate将自动访问items属性。请参阅MSDN上的“数据模板概述”页面以获取与此相关的更多帮助。

同样,从MSDN,该ContentControl.ContentTemplateProperty

获取或设置用于显示的内容的数据模板ContentControl

同样,其DataContext将自动设置为设置为Content属性的对象请注意,ContentControl只有一个ContentTemplate属性有一个属性,没有ItemTemplate属性,它用于收集项目... MSDN上的“数据模板概述”页面中:

由于myTaskTemplate是一种资源,因此您现在可以在具有采用DataTemplate类型的属性的其他控件上使用它。如上所示,对于ItemsControl对象(例如ListBox),它是ItemTemplate属性。对于ContentControl对象,它是ContentTemplate属性。


更新>>>

为了进一步阐明这种情况,请考虑以下简单规则:

使用该ContentTemplate属性定义设置为Contenta的对象的ContentControl外观。

使用ItemTemplate属性来定义如何项目集合控制的应该看看。

区别最简单。但是,我想指出的是,由于这些属性都是type DataTemplate,它们的值可以互换的。

例如,假设您有一个Person类,并且在中显示了一个Person对象集合ListBox您可以声明一个DataTemplatesetListBox.ItemTemplate属性作为属性,以定义Person集合中每个属性的外观。但是,如果您只想显示一个Person,则可以ContentControlContentsetset一起使用到Person该类的实例,并且仍然使用same DataTemplate,但是将set设置为ContentTemplate代替:

多个对象:

<ListBox ItemsSource="{Binding People}" ItemTemplate="{StaticResource Template}" ... />

...

单个对象:

<ContentControl Content="{Binding Person}" 
    ContentTemplate="{StaticResource Template}" ... />

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WPF TabControl覆盖TabItem背景吗?

单击 TabControl 的当前 tabItem(在 WPF 中)

WPF TabControl:ItemContainerStyle和ItemTemplateSelector

WPF,如何根据 TabControl 的属性设置 TabItem 的样式?

WPF的PreviewMouseLeftButtonDown和MouseLeftButtonDown之间的区别

WPF中OnInitialized和OnSourceInitialized之间的区别

WPF 为 TabItem ContentTemplate 动态设置上下文

如何将WPF TabControl ContentTemplate绑定到不同ViewModel的可观察集合

使用TabControl和MVVM在WPF中进行正确的数据绑定

TabControl WPF中的TabControl

如何更改WPF TabControl的ItemTemplate的样式,以便设置选项卡页眉的背景颜色?

将TabItem添加到现有的TabControl WPF / MVVM

如何在WPF中强制内容卸载我的TabControl的所有TabItem?(使用Caliburn.micro)

WPF - 清除 TabControl 的所有 TabItem 中的所有文本框

Xamarin.Forms BindableProperty和WPF DependencyProperty之间的区别

WPF 3.5和4.0之间有什么区别?

WPF / WinForms中GiveFeedBack和QueryContinueDrag之间的区别

使用ItemsSource和ItemTemplate的WPF ListBox

更改 tabcontrol WPF 上的选项卡时,从另一个窗口重新加载 TabItem 中的数据

在 TabControl.ContentTemplate 中使用 ViewLocator

之间的区别 和|| 或&和&&

WPF Caliburn.Micro和TabControl-更改标签,而不更改模型

具有多个ViewModel和更改选项卡的C#WPF MVVM TabControl

在 WPF TabControl 中分离选项卡标题和选项卡内容

*和管道之间的区别

<%#..%>和<%#:..%>之间的区别?(冒号)

http://和//之间的区别

if(){}和if()之间的区别:endif;

SQL =和IN之间的区别