/VirtualizingStaggeredPanel

(WIP) Use VirtualizingPanel to implement StaggeredPanel

Primary LanguageC#MIT LicenseMIT

VirtualizingStaggeredPanel


简介

此项目提供一个StaggeredPanel的虚拟化实现. 此面板类继承VirtualizingPanel以及实现IScrollInfo接口。

功能和实现状态(没提就是还没测试)

  • 用在ItemControls.ItemsPanel - 支持
  • ItemControls滚动 - 支持(但因为VirtualizingStaggeredPanel实现了IScrollInfo,因此ItemsControls需要改改,且ItemControls不能被ScrollViewer包围)
  • ItemControls实时添加Item到列表尾部 - 支持
  • ItemControls实时添加Item到列表头部 - 支持(但可能会有显示问题)
  • Panel滚动到指定的Item上 - 支持(示例)
  • 单独使用VirtualizingStaggeredPanel - 暂时不支持
  • VirtualizingStaggeredPanel实时改变面板宽度/高度 - 支持(但可能会有显示问题)
  • ItemControls清除全部Items - 支持(但需要调用ForceRefreshContainItems()刷新布局和滚动条)
  • ItemControls清除部分Items - 不支持(后面可能实现)

食用方式


对应的ItemsControl的ItemSource的元素类,必须是实现了的IVirtualGridFlowPanelItemParam(示例).
Example

属性名 默认值 描述
GridItemWidth 150 表示每一列的固定宽度,像素为单位
ScrollOffset 10 表示滑动条一次滚动的位移量,像素为单位

Other

根据不愿透露姓名的火瑶瑶大佬的钦点,因为本项目存在很大的局限性,本人整这个项目是因为本人其他项目需求,其他人其他项目想应用本项目前请确保以下几点:

  • 你的需求是否必须需要StaggeredPanel的虚拟化实现?
  • 你的需求能包容本项目的缺点和限制吗?