【问题标题】:What's a comprehensive list of parts of an ItemsControl?ItemsControl 各部分的完整列表是什么?
【发布时间】:2021-03-04 03:44:25
【问题描述】:

UWP XAML ItemsControl 是许多复杂 XAML 类的基础,例如 ListViewGridView

文档Item containers and templates 描述了这些控件的两个关键部分:

  1. 数据模板
  2. 控制模板

这些部分组合起来形成最终视图:

容器控件(例如 ListViewItem 和 GridViewItem)由两个重要部分组成,它们结合起来为项目显示最终的视觉效果:数据模板控件模板 .

在实践中,开发者通过在ListView.ItemTemplate(或GridView.)中指定DataTemplate来指定数据模板,并且可以通过向ListView.ItemContainerStyle提供Style(TargetType="ListViewItem")来自定义控件模板。

开发人员还可以自定义ListView.ItemsPanel(默认为ItemsStackPanel),ListView.ItemContainerStyle 的默认Template 包含ListViewItemPresenter。物品容器和模板的文档也提到了这些。

这就提出了一个问题:

当我将 ListView(或 GridView 或任何 ItemsControl)添加到我的代码中时,我实际上添加了什么?我可以自定义什么?我的数据如何显示?

据我所知,ListView 看起来像:

  • ListView
    • 渲染它的Template,它以某种方式渲染:
      • ItemsPanel
        • 呈现其ItemsPanelTemplate,即:
          • ItemsStackPanel
            • 为每个项目渲染:
              • ListViewItem
                • 呈现其Template,即:
                  • ListViewItemPresenter
                    • 不知何故呈现:
                      • ListView.ItemTemplate

但这一点我不清楚。

【问题讨论】:

    标签: xaml listview uwp windows-runtime


    【解决方案1】:

    您可以在 xaml 中自定义任何内容

    在后台,ListViewGridView 都可以由 ItemsControl 创建,但它们的默认模板已经内置了一些自定义。

    如果你想了解什么时候使用哪个,这里有一个页面:

    https://docs.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中。

    【讨论】:

    • 谢谢,但这并不能完全回答我的问题。我知道如何绑定 Items 或 ItemsSource;相反,我试图理解 ListView(或任意 ItemsControl)的所有不同“层”。您链接的文档描述了基本用法,但我正在寻找对 ListView 的深入了解——什么呈现什么,哪些部分是可定制的?谢谢!
    • 您链接的 Dr. WPF 页面(特别是 P 代表 Panel,L 代表 Lookless)讨论了其中一些概念(特定部分的演示者和样式),但我希望更统一“所有东西的清单。”
    • 正如@sowen 在他的回答中提到的,您可以自定义 XAML 中的几乎所有控件。您可以转到包含所有控件默认样式的 generic.xaml 文件。它应该位于 C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\ [Version] \Generic。找到listview的样式,可以看到listview的完整层并更改它。(generic.xaml中不要更改,复制到你想要的页面中使用)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2014-08-19
    • 1970-01-01
    • 2013-02-02
    • 2015-04-20
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多