2014-02-11 29 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

非常感谢这个伟大的解决方案! –

相关问题