LinedFlowLayout.ItemsInfoRequested 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
發生於需要調整目前卷動檢視區中專案和周圍之專案的大小資訊時 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
的寬度變更一律會觸發專案的重排。