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, Проверьте эту ссылку, чтобы узнать, как, если вы еще не знаете.

Другие вопросы по тегам