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 的寬度變更一律會觸發專案的重排。

適用於