2012-07-24 2 views
2

Я создал longlistselector с использованием шаблона mvvm.Навигация с использованием элемента управления LongListSelector

Я создал много названий городов под разными заголовками.

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

ответ

2

Вы можете просто подключить до прослушивателя событий либо tap события на каждый ListBoxItem (т.е. на содержащий grid/canvas/что угодно) или на SelectionChanged событии на самом списке.

Пример:

<ListBox:ItemTemplate> 
    <DataTemplate> 
     <Grid Tap="Tap_Handler"> 
      // .. your text or whatever goes here 
     </Grid> 
    </DataTemplate> 
</ListBox:ItemTemplate> 

и код-за магии:

public void Tap_Handler(object sender, GestureEventArgs e) 
{ 
    var item = (sender as Grid).DataContext as City; // Given you have City objects in your list 
    NavigationService.Navigate(new Uri("/View/City.xaml?id=" + item.Id, UriKind.Relative); 
} 

Должно быть что-то подобное, если это не работает прямо из коробки.

+0

Большое спасибо. Оно работает!! только с небольшими изменениями. Вместо NavigationContext.Navigate я использовал NavigationService.Navigate. Отредактируйте его. – user1538895

+0

Но как я могу использовать это для перехода на разные страницы. Например, у меня есть City1.xaml City2.xaml и City3.xaml. Как я могу перейти на эти страницы, когда пользователь clciks City1, City2 и City3, соответственно, в моем спискеselector – user1538895

+0

@ user1538895, который звучал как плохое решение, но если вы настаиваете на этом, вы в основном просто вставляете идентификатор или что-то другое, что у вас есть в другом расположение: «/ View/City» + item.Id + «.xaml». –

1

Вы можете подписаться на событие SelectionChanged от LongListSelector.

longListSelector.SelectionChanged += new SelectionChangedEventHandler(longListSelector_SelectionChanged); 
+0

Я не получил вас – user1538895

Смежные вопросы