LinedFlowLayout.ItemsInfoRequested 事件

定义

当 需要当前滚动视区中和周围项的大小调整信息时 LinedFlowLayout 发生。

// Register
event_token ItemsInfoRequested(TypedEventHandler<LinedFlowLayout, LinedFlowLayoutItemsInfoRequestedEventArgs const&> const& handler) const;

// Revoke with event_token
void ItemsInfoRequested(event_token const* cookie) const;

// Revoke with event_revoker
LinedFlowLayout::ItemsInfoRequested_revoker ItemsInfoRequested(auto_revoke_t, TypedEventHandler<LinedFlowLayout, LinedFlowLayoutItemsInfoRequestedEventArgs const&> const& handler) const;
public event TypedEventHandler<LinedFlowLayout,LinedFlowLayoutItemsInfoRequestedEventArgs> ItemsInfoRequested;
function onItemsInfoRequested(eventArgs) { /* Your code */ }
linedFlowLayout.addEventListener("itemsinforequested", onItemsInfoRequested);
linedFlowLayout.removeEventListener("itemsinforequested", onItemsInfoRequested);
- or -
linedFlowLayout.onitemsinforequested = onItemsInfoRequested;
Public Custom Event ItemsInfoRequested As TypedEventHandler(Of LinedFlowLayout, LinedFlowLayoutItemsInfoRequestedEventArgs) 

事件类型

注解

此事件是使用 LinedFlowLayoutItemsInfoRequestedEventArgs 参数引发的,该参数提供有关所请求的项大小调整信息的详细信息。

可以提供请求的信息以提高用户界面的响应能力。 此事件的处理是可选的,并通过以下方式影响 LinedFlowLayout 采用的布局算法。

未处理此事件,或者未为请求的项范围提供大小调整信息:

  • 创建一个连续的项范围。 默认情况下,这些项将填充最多 5 个滚动视区(围绕当前可见视区)的缓冲区。 所有其他项都已虚拟化。
  • 仅对项目范围进行布局。范围之外的项 (虚拟化项) 不会影响布局。
  • 滚动浏览项 (更普遍,每个布局传递) 触发 ItemsInfoRequested 事件,尝试再次收集大小调整信息。
  • 最近创建的项用于计算每行的平均项值。 该数字确定显示整个集合所需的行数,以及每个项的大致位置。
  • 宿主 ItemsRepeater/ItemsView 的宽度更改可能会触发也可能不触发每行项的平均更改。 宽度变化越大,平均每行项更改的可能性越大。
  • 当由于任何原因,每行的平均项计算结果为新值时,将执行项的完整重排。
  • 缓冲区中创建和布局的项数 (最多 5 个滚动视区,) 按每行计算的平均项数严格执行。

为请求的项范围提供大小调整信息:

导致的特征与第一种情况相同,但以下情况除外:

  • 最多只创建 3 个滚动视区,而不是 5 个。 创建的项目越少,性能就越好。 因此,建议处理 ItemsInfoRequested 事件,并为至少请求的范围提供大小调整信息,这最多涵盖 5 个滚动视区。
  • 每行的平均项数是根据提供的大小调整信息而不是所创建项的所需大小计算的。
  • 滚动浏览项会 ItemsInfoRequested 触发 事件,以便收集缓冲区的大小调整信息, (最多 5 个滚动视区) 围绕新的可见视区居中。

为大于所请求的项目范围提供大小调整信息:

导致的特征与第一种情况相同,但以下情况除外:

  • 由于为请求的项范围的超集提供了大小调整信息,因此滚动不一定引发 ItemsInfoRequested 事件。 只要以可见视区为中心的 5 个滚动视区在已知大小范围内, ItemsInfoRequested 就不需要引发 。
  • 事件处理程序提供 ItemsInfoRequested 的大小调整信息的项目范围越大,其出现次数就越少。 这可以提高整体性能。

提供整个项集合的大小调整信息:

此案例导致的特征与前面的 3 个案例明显不同:

  • 最多可创建 3 个滚动视区,
  • 将针对所有项计算边界矩形,无论是创建项还是虚拟化项。 这将充分利用为整个集合提供的大小调整信息。
  • 对于在可见视区周围布置的项数没有强制要求。 不受限制,无法实现每行的平均项数可能会导致项目裁剪减少。 每行的平均项数也不强制实施总行数。
  • 滚动浏览项永远不会触发事件, ItemsInfoRequested 因为无需检索其他大小调整信息。 但是,事件可以通过调用 InvalidateItemsInfo 方法触发。
  • 宿主 ItemsRepeater/ItemsView 的宽度更改始终触发项的重排。

适用于