WP8 LongListSelector - переход на разные страницы
Недавно я создал LongListSelector для своего приложения Windows Phone 8. Однако сейчас я хочу перейти на другую страницу, когда пользователь нажимает на элемент, но я не знаю, что вставлено в мой код, а также я не на 100% знаю, куда мне вставлять свои URI для каждого человека. стр. Кто-нибудь знает, как мне этого добиться?
Буду признателен, если кто-нибудь сможет мне помочь с этим вопросом.
Большое спасибо.
Partial Public Class Station_Chooser
Inherits PhoneApplicationPage
Public Sub New()
InitializeComponent()
Dim source As New List(Of Glasgow)()
source.Add(New Glasgow("Bridge Street"))
source.Add(New Glasgow("Buchanan Street"))
source.Add(New Glasgow("Cessnock"))
source.Add(New Glasgow("Cowcaddens"))
source.Add(New Glasgow("Govan"))
source.Add(New Glasgow("Hillhead"))
source.Add(New Glasgow("Ibrox"))
source.Add(New Glasgow("Kelvinbridge"))
source.Add(New Glasgow("Kelvinhall"))
source.Add(New Glasgow("Kinning Park"))
source.Add(New Glasgow("Patrick"))
source.Add(New Glasgow("Shields Road"))
source.Add(New Glasgow("St Enoch"))
source.Add(New Glasgow("St George's Cross"))
source.Add(New Glasgow("West Street"))
Dim DataSource As List(Of AlphaKeyGroup(Of Glasgow)) = AlphaKeyGroup(Of Glasgow).CreateGroups(source, System.Threading.Thread.CurrentThread.CurrentUICulture, Function(s As Glasgow)
Return s.Station
End Function, True)
GlasgowSubway.ItemsSource = DataSource
End Sub
Public Class Glasgow
Public Property Station() As String
Get
Return m_Station
End Get
Set(value As String)
m_Station = value
End Set
End Property
Private m_Station As String
Public Sub New(station As String)
Me.Station = station
End Sub
End Class
End Class
1 ответ
Есть несколько способов сделать это. Один из них показан в этом ТАКОМ вопросе, может быть, не лучшим или самым красивым способом, но очень простым.
Прикрепить обработчик событий для
SelectionChanged
, добавить команду для перехода на новую страницу в обработчике, установитьSelectedItem = null
Я предположил, что целевая страница - это та же страница для любого выбранного элемента, только другое содержимое / данные отображаются. Вам нужно передать подпись выбранного элемента в параметре Uri, чтобы на целевой странице отображалась соответствующая информация. Например:
NavigationService.Navigate(New Uri("/nextpage.xaml?selectedStation=" & selectedItem.Station, UriKind.Relative))
ОБНОВИТЬ:
Поскольку вы пояснили, что страница назначения будет отличаться для каждого элемента, мой предыдущий ответ все еще действителен. Только более позднюю часть необходимо изменить, не используя параметр Uri. Так вот что я думаю. Добавить другую недвижимость в Glasgow
класс, скажи это StationId
, После инициализации:
//the second parameter is StationId value
source.Add(New Glasgow("Bridge Street", "BridgeStreet"))
Затем назовите каждую страницу с шаблоном StationId.xaml, поэтому страница для Бридж-стрит должна быть BridgeStreet.xaml
, С этим, в SelectionChanged
обработчик событий вы можете перейти на соответствующую страницу без использования Select Case selectedItem.Station ...
:
NavigationService.Navigate(New Uri(selectedItem.StationId & ".xaml", UriKind.Relative))
Примечание. Наличие в модели более одного свойства (Station
а также StationId
в этом случае) требуется указать, какое свойство отображать в LongListSelector
, Проверьте эту ссылку, чтобы узнать, как, если вы еще не знаете.