我有一个ListBox控件,我使用ObservableCollection添加项目到我的ViewModel但是我注意到ListBox不保持滚动位置,因为我期望。Silverlight维护列表框滚动位置
我是新来的Silverlight,并选择使用MVVM,但我不知道这样做。该方案如下:
- 获取列表框的滚动位置(需要访问XAML控制,但内部视图模型?)
- 添加项目的ObservableCollection(做,只是通过Dispatcher.CheckBeginInvokeOnUI在视图模型,ListBox控件的ItemSource被绑定到它)。
- 设定ListBox的滚动位置(需要再次访问XAML控制从内部视图模型?)
我发现这个答案在这里: 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在一般情况下,很迷茫。