Используя Silverlight 4 с MVVM, как я могу программно прокрутить вверх страницы - PullRequest
0 голосов
/ 25 мая 2011

У меня есть приложение Silverlight, которое перемещается между страницами.Почему-то браузер, похоже, запоминает последнее прокручиваемое местоположение страницы, поэтому, когда я возвращаюсь на страницу, я возвращаюсь в то же место.

Например:
Страница 1 имеет список поиска
Страница 2 содержит подробности со ссылкой внизу страницы на список поиска

Если страница 2 превышает высоту браузера, вызывая вертикальные полосы прокрутки, когда я выбираю элемент отправки из списка настраница 1, я получил доступ к странице 2 должным образом, но прокрутил к нижней части страницы, где была ссылка.

Как я могу получить страницу браузера, чтобы перейти обратно к верхней части страницы?
Есть ли решение MVVM, а не решение javascript на странице XAML? Времена, когда я хочу, чтобы местоположение не менялось

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Я нашел способ сделать это с помощью 3-х частей решения:

1) на главной странице xaml добавить загруженное событие

<ScrollViewer  ...  Loaded="ScrollViewer_Loaded"> 

2) в коде за страницей xaml.cs сохраните ссылку в глобальной переменной

private void ScrollViewer_Loaded(object sender, System.Windows.RoutedEventArgs e) 
{     gContentScroll = (ScrollViewer)sender;     } 

3) где-либо еще вы можете обращаться к этому глобальному объекту по мере необходимости, например, в SomeOtherViewModel.cs

Во время инициализации OnLoad

...
gContentScroll.ScrollToVerticalOffset(0);
...
0 голосов
/ 26 мая 2011

ScrollViewer оборачивает два элемента управления ScrollBar для вертикальной и горизонтальной полос прокрутки. Вертикальная полоса прокрутки имеет свойство «Значение», которое имеет TemplateBinding для VerticalOffset, который, как я считаю, определяет местоположение. который является собственностью Scrollviewer. К сожалению, это не свойство Dependency, поэтому вы не можете привязать его непосредственно в вашей виртуальной машине. ScrollViewer имеет метод с именем ScrollToVerticalOffset, и там вы можете указать местоположение. Если вам действительно нужна логика в вашей виртуальной машине, вы можете попытаться написать собственный шаблон для ScrollViewer и привязать свойство Value в ScrollBar к Vm.

...