2009-09-01 22 views
1

我與ScrollViewer工作,我注意到,在調用ScrollToHorizontalOffsetScrollToVerticalOffset時,這似乎在提高ScrollChanged事件延遲效應。我還注意到,HorizontalOffset/VerticalOffset屬性並不立即具有剛剛設置的值。經過一小段時間後,ScrollChanged事件被引發並且屬性具有正確的值。爲什麼ScrollViewer中ScrollChanged事件只以下,以ScrollToVerticalOffset/ScrollToHorizo​​ntalOffset調用一個小的延遲後長大的嗎?

有誰知道這個滯後效應的原因是什麼?爲什麼不立即更新?無論如何強迫它立即更新?

回答

3

其原因延遲效應在於內部的ScrollViewer本身。每次調用ScrollToHorizo​​ntalOffset()時,它都會將您的請求添加到在LayoutUpdated事件中處理的內部處理隊列中。要觸發此事件,ScrollViewer會使內部控件的排列無效。只有在安排傳球完成後(ArangeOverride()在視覺樹下進行處理),它纔會引發ScrollChanged事件。

去你的最後一個問題:「反正是有,迫使它立即更新?」,我只能建議,使您的ScrollViewer的肯定內容儘可能快安排越好。我想不出任何其他方式,這可能是比這要容易得多......

也許如果你能說你爲什麼需要該事件立即發生,我們可以建議的東西比這個答案:)好?

+0

感謝您的回答。我並不需要立即觸發它,這不完全是一個問題,我只是好奇它爲什麼它的工作方式。 – 2009-09-02 08:21:54

相關問題