Silverlight中ScrollIntoView()无效解决方案
在 Silverlight 的 ListBox 中有一个方法 ScrollIntoView() 用来将对象定位到视图中,但是在实际编程的过程中发现 ListBox.ScrollIntoView() 并没有实现所要的功能,据说在 WCF 中可以。问题的起源见于 http://www.cnblogs.com/cyq1162/archive/2010/07/19/1780752.htm。
查了一些资料,得到最终的解决方案为:在调用 ScrollIntoView() 之前使用 lbMsg.UpdateLayout() 更新布局可以解决这个问题。
可以参考以下代码:
1 string item = tbItem.Text;
2 if (item != "")
3 {
4 lbMsg.Items.Add(item);
5 lbMsg.SelectedIndex = lbMsg.Items.Count - 1;
6 lbMsg.UpdateLayout();
7 lbMsg.ScrollIntoView(lbMsg.SelectedItem);
8 tbItem.Text = "";
9 }
2 if (item != "")
3 {
4 lbMsg.Items.Add(item);
5 lbMsg.SelectedIndex = lbMsg.Items.Count - 1;
6 lbMsg.UpdateLayout();
7 lbMsg.ScrollIntoView(lbMsg.SelectedItem);
8 tbItem.Text = "";
9 }
参考资料:1. http://forums.silverlight.net/forums/p/19486/293798.aspx