#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. Неплохое предположение, учитывая, сколько кода было вставлено выше!