HandyOrg / HandyControl

Contains some simple and commonly used WPF controls
https://handyorg.github.io/
MIT License
6.03k stars 1.02k forks source link

[Feature request] 希望新增 AdaptiveGridView 控件 #1129

Open CodingOctocat opened 2 years ago

CodingOctocat commented 2 years ago

UWP 有一个非常适合用于展示素材库的控件: AdaptiveGridView adaptivegridview

它比瀑布流面板更加适合浏览,瀑布流让人目不暇接,看着费眼。

AdaptiveGridView 控件应该支持(包括但不限于)这种效果:

  1. 每个 Item 拥有相同的尺寸
  2. 我可以设置 Item 的最小宽度
  3. 自适应填充 Item

详细信息见上诉链接。

这篇博客实现了这种 Panel,但我觉得的不够好。 WrapPanel with full width columns jonstodle - gist uniform-width-adaptive

注意,jonstodle 实现了多种 UniformWrapPanel,我用的是 UniformMinWidthWrapPanel,这个控件对我来说存在两个问题:

  1. 不支持虚拟化
  2. 不知为什么个别 ItemPanel 窄宽度时尺寸无法继续变小而发生溢出
  1. 还有一个问题,我在 TabControl 中有多个 TabItem,每个 TabItem 的内容都是 UniformMinWidthWrapPanel,在切换 Tab 时,我发现他们的滚动条是同步的,也就是说 TabItemA 内的滚动条已经滚动到某个位置,切换到另一个 TabItemB 时, TabItemB 的内容也被滚动到了 TabItemA 的位置。
NaBian commented 2 years ago
  1. 虚拟化实现逻辑较复杂,需要考虑到分组;
  2. 可以使用 WaterfallPanel 的 AutoGroup 属性,只需确保 Item 高度一致即可。