#silverlight #windows-phone-7 #mvvm-light #relaycommand
#silverlight #windows-phone-7 #mvvm-light #relaycommand
Вопрос:
Используя поведение EventToCommand, которое поставляется с MVVM Light, я привязываю выбранный элемент ListBox к RelayCommand в ViewModel
Все отлично работает в моем приложении для Windows Phone 7, за исключением того, что после перехода из представления с помощью ListBox обратно выбранный элемент остается таким же, как и раньше. Не то, что я хочу.
Я попытался сбросить выбранный индекс при переходе, но это приводит к повторному запуску команды.
Кто-нибудь еще решил эту проблему и как?
TIA
Патрик Лонг
Ответ №1:
Я обрабатываю это простой проверкой в начале каждого обработчика. Предполагая, что вы поддерживаете только один выбор элементов, вы можете проверить, есть ли добавленный элемент.
if (e.AddedItems.Count == 1)
{
// Your code here
}
(Где e
является экземпляром SelectionChangedEventArgs
.)
Если выделение было удалено, AddedItems
список будет пустым, но вместо него будет заполнен RemovedItems
список.
Ответ №2:
Поскольку вы используете mvvm light, не можете ли вы вызвать метод clear в ViewModelLocator для конкретной модели представления?
Ответ №3:
Я отказался от использования события SelectionChanged. Теперь я делаю все это с помощью TapGestures. Недостатком этого является то, что TapGesture не работает с поведением EventToCommand, поэтому я перехватываю событие Gesture в представлении и запускаю команду, которая привязана к DataContext отправителя.
ИМХО, это намного аккуратнее, чем использовать SelctionChanged и возиться с selectedIndexes.