2014-02-11 31 views
4

我有一些自定義計算根據ScrollViewer的視口的尺寸更改了控件的尺寸。目前,我在獲取ScrollViewer.SizeChanged事件時進行了這些計算。但是,在ScrollViewer更新ViewPort尺寸之前,似乎會執行SizeChanged事件。 SizeChanged的事件處理程序顯示了一個ScrollViewer發件人,其寬度和高度更新爲新維度,但ViewportWidth和ViewportHeight屬性爲舊維度。ScrollViewer的視口大小上的事件發生了變化

一旦這些值發生變化,是否有辦法執行代碼?

+0

你解決了嗎?我在這裏看到了同樣的效果。視口大小因滾動條的寬度/高度加上增量而不同。還沒有真正理解發生了什麼。它變得很奇怪。 – l33t

+0

不...我剛剛走了ActualWidth和ActualHeight。 :/ – sohum

回答

0

我建議你繼續收聽SizeChanged事件。訂閱該事件並詢問ScrollViewer關於其Viewport內部處理程序,但是使用Background或Loaded prority分發該請求。 ScrollViewer的當前大小應該大致等於Viewport。

10

根據MSDN您檢查ScrollViewer的ScrollChanged事件。當它啓動時,這意味着視口寬度或視口高度已更改。

OnScrollChanged檢測到滾動狀態變化時調用,例如滾動位置,範圍或視口大小發生變化。

+0

嗯,有趣。我會檢查出來的。 – sohum

+0

非常感謝這個偉大的解決方案! –

相關問題