WP7 Tombstoning — не удается установить значение выбранного элемента списка из данных состояния

#c# #silverlight #windows-phone-7 #listbox #tombstoning

#c# #silverlight #windows-phone-7 #список #tombstoning

Вопрос:

Я настраиваю tombstoning для простого приложения WP7. У меня есть список элементов, и я хочу сохранить ListBox.SelectedIndex в памяти состояния, а при возвращении на страницу выберите этот элемент в списке.

Когда я пытаюсь выполнить следующий код, сохранение значения, похоже, работает (я подтвердил, отобразив его в окне сообщения), но элемент списка не выбран.

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

            if (State.ContainsKey("activeResult"))
            {
                listBox1.SelectedIndex = Convert.ToInt32(State["activeResult"]);
            }
            base.OnNavigatedTo(e);
        }

        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
        {
            State["activeResult"] = listBox1.SelectedIndex;
            base.OnNavigatedFrom(e);
        }
  

Код компилируется без ошибок, но элемент listbox просто никогда не выбирается.
спасибо за вашу помощь!
приветствия
Будет

Комментарии:

1. как вы определяете, выбрано ли оно? Добавили ли вы обработчик для SelectionChanged, чтобы посмотреть, вызывается ли он? Когда вы заполняете поле списка?

Ответ №1:

Дикое предположение говорит, что вы привязываете список к данным после установки SelectedIndex , и, как таковой, он не имеет никакого эффекта (если только он не равен нулю).

Решение: убедитесь, что ваша ViewModel инициализирована и загружена, прежде чем устанавливать SelectedIndex или привязывать SelectedIndex свойство к данным и устанавливать его в вашей ViewModel, а не в компоненте пользовательского интерфейса.

Комментарии:

1. вы были правы — после долгой отладки я обнаружил, что я действительно привязывал список к данным после установки SelectedIndex. Неплохое предположение, учитывая, сколько кода было вставлено выше!