2016-08-17 38 views

回答

1

虛擬化只發生在視口外的項目。因此,將GridView放入限制其大小的控件(例如,不帶自動大小的行/列的Grid)或設置控件的大小非常重要。如果您的HubSection沒有固定大小,我不會感到驚訝。

視口的概念對UI虛擬化至關重要,因爲 框架必須創建可能顯示的元素。通常, 控件的視口是邏輯控件的範圍。例如,一個ListView的視口是ListView元素的寬度和 的高度。一些面板允許子元素 不受限制的空間,例如ScrollViewer和網格,其中 自動調整大小的行或列。當虛擬化的ItemsControl被放置在類似的面板中時,它需要足夠的空間來顯示其所有 項目,這會影響虛擬化。通過在ItemsControl上設置 寬度和高度來恢復虛擬化。

enter image description here

而且自定義模板往往打破虛擬化:

如果你提供了一個自定義項目面板模板(見ItemsPanel)然後 確保您使用的是虛擬化面板如ItemsWrapGrid或 ItemsStackPanel。如果您使用VariableSizedWrapGrid,WrapGrid或StackPanel,那麼您將無法獲得虛擬化。

MSDN上的更多信息:UWPWin8,其中也有一些很好的意見仍然算。