UWP XAML ItemsControl是许多复杂XAML类(如ListView和GridView)的基础。
文档Item containers and templates描述了这些控件的2个关键部分:
1.数据模板
1.控件模板
这些部分合并起来创建最终视图:
容器控件(如ListViewItem和GridViewItem)由两个重要部分组成,这两个部分合并起来创建为项显示的最终视觉效果:* 数据模板 * 和 * 控制模板 *。
实际上,开发人员通过在ListView.ItemTemplate
(或GridView.
)中指定DataTemplate来指定数据模板,并且他们可以通过向ListView.ItemContainerStyle
提供Style(TargetType="ListViewItem"
)来自定义控件模板。
开发人员也可以自定义ListView.ItemsPanel
(默认为ItemsStackPanel
),ListView.ItemContainerStyle
的默认Template
包含ListViewItemPresenter
。Item容器和模板的文档也提到了这些。
这就提出了一个问题:
**向代码中添加ListView(或GridView或任何ItemsControl)时,实际添加的是什么?**可以自定义什么?如何显示数据?
就我所能确定的,ListView看起来像这样:
ListView
- 呈现其
Template
,该Template
以某种方式呈现: ItemsPanel
个- 呈现其
ItemsPanelTemplate
,即: ItemsStackPanel
- 每个项目的渲染:
ListViewItem
- 呈现其
Template
,即: ListViewItemPresenter
个- 以某种方式呈现:
ListView.ItemTemplate
个
但这一点我不清楚。Disclaimer: I work for Microsoft.
1条答案
按热度按时间pkbketx91#
您可以在xaml中自定义任何内容
实际上,
ListView
和GridView
都可以由ItemsControl
创建,但是它们的默认模板已经内置了一些自定义功能。如果你想知道什么时候使用which,这里有一个页面:
https://learn.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/lists
例如,如果使用绑定,则数据将设置为ItemsSource
也可以直接设置。
从你的问题听起来,你可能还没有理解这个基础,所以也许阅读这个系列会帮助你:
http://drwpf.com/blog/itemscontrol-a-to-z/
它是针对wpf的,但基本原理是相同的,您也可以将其应用于UWP。