Silverlight поддерживает положение прокрутки ListBox - PullRequest
3 голосов
/ 15 марта 2011

У меня есть элемент управления ListBox, к которому я использую ObservableCollection для добавления элементов в ViewModel, однако я заметил, что ListBox не поддерживает положение прокрутки, как я ожидал.

Я новичок в Silverlight ирешил пойти с MVVM, но я не могу понять, чтобы сделать это.Сценарий выглядит следующим образом:

  • Получить позицию прокрутки ListBox (требуется доступ к элементу управления xaml, но внутри ViewModel?)
  • Добавить элемент в ObservableCollection (выполнено, просто через Dispatcher.CheckBeginInvokeOnUI вViewModel, к которому привязан ItemSource элемента управления ListBox).
  • Установить позицию прокрутки ListBox (снова необходим доступ к элементу управления xaml из ViewModel?)

Я нашел этот ответздесь: Восстановление точной позиции прокрутки списка в Windows Phone 7

И с небольшим изменением я думаю, что вертикальную позицию прокрутки можно получить и установить с помощью:

ScrollViewer sv = TimelineTweets.Descendents().OfType<ScrollViewer>().FirstOrDefault();
double startOffset = sv.VerticalOffset;
sv.ScrollToVerticalOffset(startOffset);

Но как бы я поступил так с MVVM и Silverlight в целом, очень растерян.

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Я бы предположил, что позиция прокрутки - это что-то для пользовательского интерфейса, поэтому обрабатывайте ее в коде пользовательского интерфейса.Это не сломает MVVM, потому что вы по-прежнему обрабатываете все это в вашей ViewModel.

0 голосов
/ 15 марта 2011

вы можете сохранить его, используя

(DataContext as VM).ScrollVOffset=sv.VerticalOffset 

внутри вашего представления.Где VM - это класс ViewModel, а ScrollVOffset - это свойство класса ViewModel.

...