Запоминание позиции LongListSelector - PullRequest
4 голосов
/ 04 мая 2011

Я занимаюсь разработкой приложения для Windows Phone 7 (WP7) и использую элемент управления LongListSelector для списка. Когда пользователь нажимает на один из элементов, мой обработчик событий переходит на новую страницу для выбранного элемента. Однако когда пользователь нажимает кнопку «Назад», чтобы вернуться на предыдущую страницу, LongListSelector находится в другом положении, чем было. Кто-нибудь знает, как запомнить положение селектора и восстановить его, когда он возвращается?

1 Ответ

1 голос
/ 05 мая 2011

Когда вы обрабатываете событие SelectionChanged, вы можете сохранить SelectedItem (который, я полагаю, вы уже извлекаете, чтобы определить новую страницу) в свойстве страницы. Затем в событии OnNavigatedTo для страницы, если этот элемент не равен нулю, вы можете использовать метод ScrollTo. Примерно так (где lls - ваш длинный список выбора):

private object previousItem = null;
private void lls_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    object previousItem = lls.SelectedItem;
    //Page Navigation Magic
}

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    if (previousItem != null)
        lls.ScrollTo(previousItem);
}
...