转载:http://blog.csdn.net/hyr83960944/article/details/7728644
做win8开发也2个月了,一直的想把自己的心得放到博客上,可是每次都是赶项目,没空写,这里也就不从头开始写了,开发遇到哪些问题就写哪些吧,以前的一些心得以后有时间也会慢慢放上来。接下来进入正题:
ScrollViewer涉及到的几个高度(ViewportHeight、ExtentHeight、Height)等几个高度和WP7中是一样的,不懂的可以去看WP7中的详细介绍,若大家有兴趣,有空专门给大伙写一篇关于ScrollViewer的文章。
如果仅仅是单纯的让ScrollViewer滑动到底部很简单,只要执行以下一句代码即可:
xxx.ScrollToVerticalOffset(xxx.ActualHeight + xxx.VierportHeight);
但是要注意一点,如果涉及到实时更新问题时,比如聊天界面,实现方式是通过ScrollViewer里面包了一个ListView或者GridView的,发送短信时,显示的在界面的短信内容也要马上进行更新,这时一定要在SizeChanged事件里面进行更新,否则会有问题。
如果是ScrollViewer的SizeChanged仍然可以用上面那句代码实现,如果是ListView或者GridView的SizeChanged的事件,可用下面两句代码来实现:
double d = SmsListView.ActualHeight;
xxx.ScrollToVerticalOffset(d);
建议用后一种方式。
另外注意:对于实时更新的话,最后将以上代码放在定时事件(就是你需要实时处理的事件)中,因为SizeChanged只会在开始的时候更新一次不能实时变化,所以可以考虑以下代码
double d = this.scrList.ActualHeight + this.scrList.ViewportHeight + this.scrList.ExtentHeight;
this.scrList.ScrollToVerticalOffset(d);
this.scrList.ScrollToVerticalOffset(d);