2010-09-16 47 views

回答

44

「的ScrollViewer目前允許兩個滾動模式:平滑像素的逐像素滾動(CanContentScroll =假)或離散項逐項滾動(CanContentScroll =真)當前WPF僅由項目滾動時支持UI虛擬。基於像素的滾動也稱爲「物理滾動」,基於項目的滾動也稱爲「邏輯滾動」。

虛擬化需要基於項目的滾動,因此它可以跟蹤目前正在查看的邏輯單元(項目)......將ScrollViewer設置爲基於像素的滾動不再是邏輯單元的概念,而只是像素! !

5

UI Virtualization

經常有人問我,如果有一種方法可以解決此限制。那麼,任何事情都是可能的,但是沒有簡易解決方法。您將不得不重新實現當前虛擬化邏輯的重要部分,以將基於像素的滾動與UI虛擬化結合起來。你也必須解決一些有趣的問題。例如,當物品容器具有不同的高度時,如何計算拇指的大小? (請記住,您不知道虛擬化容器的高度 - 您只知道當前顯示的容器的高度。)您可以根據您知道的高度來設定平均值,或者您可以使用項目高度作爲項目被帶入內存(這將增加拇指大小的準確性,因爲用戶與控件交互)。您也可以決定基於像素的滾動僅適用於高度相同的項目 - 這將簡化解決方案。所以,是的,你可以想出一個解決這個限制的解決方案,但這不是微不足道的。

相關問題