XAML ItemsControl各部分的完整列表是什么?

iszxjhcz  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(152)

UWP XAML ItemsControl是许多复杂XAML类(如ListViewGridView)的基础。
文档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.

pkbketx9

pkbketx91#

您可以在xaml中自定义任何内容
实际上,ListViewGridView都可以由ItemsControl创建,但是它们的默认模板已经内置了一些自定义功能。
如果你想知道什么时候使用which,这里有一个页面:
https://learn.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/lists
例如,如果使用绑定,则数据将设置为ItemsSource

<ListView 
          ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
>...

也可以直接设置。
从你的问题听起来,你可能还没有理解这个基础,所以也许阅读这个系列会帮助你:
http://drwpf.com/blog/itemscontrol-a-to-z/
它是针对wpf的,但基本原理是相同的,您也可以将其应用于UWP。

相关问题