Как выбрать элемент списка, который уже выбран, ИЛИ выделить предыдущий выбранный элемент списка после установки SelectedIndex на -1?

#c# #visual-studio-2010 #listbox #windows-phone-7.1 #selectedindex

#c# #visual-studio-2010 #список #windows-phone-7.1 #selectedindex

Вопрос:

Я программирую простой список в Windows phone 7. В списке есть несколько элементов, и когда я нажимаю на любой из элементов, приложение переходит на новую страницу.

С самого начала и до сих пор все хорошо.

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

Я попытался сделать это, чтобы разрешить повторный выбор элемента.

 private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if(ListBox.SelectedIndex != -1 )
    {
       NavigationService.Navigate(uri);
       ListBox.SelectedIndex = -1; 
    }
}
 

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

Итак, как я могу разрешить пользователю выбирать выбранный элемент или как я могу выделить предыдущий выбранный элемент. Какие-либо предложения или советы?

РЕДАКТИРОВАТЬ: при использовании обычного списка я могу просто использовать :

 listboxitem1.Background = new SolidColorBrush(Color.Blue);`
 

Но когда я редактирую шаблон элемента списка, это вызывает исключение, поэтому я все еще не могу этого сделать.

Ответ №1:

Посмотрите на реализацию одного из других обработчиков событий для событий мыши в списке. Например, событие щелчка. Вы можете определить, когда пользователь нажимает на список, не изменяя выбранный индекс, отслеживая предыдущее выбранное значение индекса.

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

1. Что делать, если пользователь переходит от одного элемента управления к другому с помощью кнопки Tab ? В этом случае even не будет запущен

2. @RobertJ. Я забыл указать, что это было в Windows phone в теле вопроса, извините за это.

3. Миканикал, я бы хотел, чтобы было событие щелчка. кажется, в Windows phone нет события щелчка для listbox

4. @Robert J — В случае вкладки я бы не ожидал, что сделать «Выбор» до тех пор, пока пользователь не нажмет Enter, будет просто еще одним событием, которое необходимо будет обработать. К сожалению, для всего пользовательского ввода нет единого события.

5. @Jackjop. Я посмотрю на реализацию Windows phone и отвечу, если что-то найду.

Ответ №2:

Ну, вы можете отредактировать шаблон элемента списка и добавить сетку, полностью перед элементом списка. И привязать свойство видимости этой сетки.

После этого вы можете изменить видимость в соответствии с выбранным индексом. Этот подход должен хорошо работать, если вы используете навигацию с помощью listbox.

Надеюсь, это сработает!