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 の幅の変更によって、1 行あたりの平均アイテム数の変更がトリガーされる場合と、トリガーされない場合があります。 幅が大きいほど、1 行あたりの平均項目数が変化する可能性が高くなります。
  • 項目の完全なリフローは、1 行あたりの平均項目数が何らかの理由で新しい値に評価されるときに実行されます。
  • バッファー内で作成およびレイアウトされたアイテムの数 (最大 5 つのスクロール ビューポート) は、計算された 1 行あたりの平均アイテム数によって厳密に適用されます。

要求されたアイテム範囲に対してサイズ情報を正確に指定する:

次を除き、最初のケースと同じ特性が得られます。

  • 5 ではなく、最大 3 つのスクロール ビューポート分の項目のみが作成されます。 作成された項目の数が少ないほど、パフォーマンスが向上します。 したがって、イベントを ItemsInfoRequested 処理し、要求された範囲 (最大 5 つのスクロール ビューポートをカバー) のサイズ設定情報を提供することをお勧めします。
  • 1 行あたりの平均アイテム数は、作成されたアイテムの目的のサイズではなく、指定されたサイズ設定情報に基づいて計算されます。
  • 項目をスクロールすると、新しい可視ビューポートを ItemsInfoRequested 中心とするバッファー (最大 5 つのスクロール ビューポート) のサイズ情報を収集するためにイベントがトリガーされます。

要求されたアイテムよりも大きい項目範囲のサイズ設定情報を提供する:

次を除き、最初のケースと同じ特性が得られます。

  • 要求された項目範囲のスーパーセットに対してサイズ設定情報が提供されたので、スクロールによってイベントが発生すると ItemsInfoRequested は限りません。 表示されているビューポートを中心とする 5 つのスクロール ビューポートが既知のサイズ内にある限り、 ItemsInfoRequested を発生させる必要はありません。
  • イベント ハンドラーによって提供されるサイズ設定情報の項目範囲が ItemsInfoRequested 大きいほど、その出現回数は少なくなります。 これにより、全体的なパフォーマンスが向上します。

アイテム コレクション全体のサイズ設定情報を提供する:

この場合、前の 3 つのケースとは大きく異なる特性が得られます。

  • 最大 3 つのスクロール ビューポートが作成されます。
  • 外接する四角形は、作成済みか仮想化かに関係なく、すべての項目に対して評価されます。 これにより、コレクション全体に提供されるサイズ設定情報を最大限に活用できます。
  • 表示されているビューポートの周りにレイアウトされている項目の数に関する強制はありません。 1 行あたりの平均アイテム数を満たすように制約されていないと、アイテムのトリミングが少なくなる可能性があります。 行の合計数は、1 行あたりの平均項目数にも適用されません。
  • 項目をスクロールしても、追加のサイズ設定情報を ItemsInfoRequested 取得する必要がないため、イベントはトリガーされません。 ただし、イベントは メソッドの InvalidateItemsInfo 呼び出しによってトリガーできます。
  • ホスティング ItemsRepeater/ItemsView の幅を変更すると、常に項目のリフローがトリガーされます。

適用対象