#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.
Надеюсь, это сработает!