我有一个ListBox控件,我使用ObservableCollection将项添加到我的ViewModel中,但是我注意到ListBox没有像我期望的那样保持滚动位置。
我是Silverlight的新手,并选择使用MVVM,但我无法理解这一点。方案如下:
我在这里找到了这个答案: Restoring exact scroll position of a listbox in Windows Phone 7
通过一些修改,我认为垂直滚动位置可以通过以下方式获取和设置:
ScrollViewer sv = TimelineTweets.Descendents().OfType<ScrollViewer>().FirstOrDefault();
double startOffset = sv.VerticalOffset;
sv.ScrollToVerticalOffset(startOffset);
但是我怎么能在MVVM和Silverlight中解决这个问题,非常困惑。
答案 0 :(得分:1)
我建议滚动位置是UI的东西,所以在后面的UI代码中处理它。 这不会破坏MVVM,因为您仍然处理ViewModel中的所有内容。
答案 1 :(得分:0)
您可以使用
存储它(DataContext as VM).ScrollVOffset=sv.VerticalOffset
在您的视图中。其中VM是ViewModel类,Scroll Offset是ViewModel类的属性。