WP8 LongListSelector - 导航到不同的页面

时间:2013-12-27 23:05:11

标签: vb.net xaml windows-phone-8 windows-phone longlistselector

我最近为我的Windows Phone 8应用程序创建了一个LongListSelector。然而,我现在想要实现的是当用户点击某个项目时导航到另一个页面,但我不知道我的代码中放了什么,而且我不是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 个答案:

答案 0 :(得分:2)

有一些方法可以做到这一点。其中一个在this SO question中显示,可能不是最好的或最美的方式,但非常简单。

  

附加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 命名每个页面,因此 Bridge Street 的页面应为BridgeStreet.xaml。有了它,在SelectionChanged事件处理程序中,您可以导航到相应的页面而不使用Select Case selectedItem.Station ...

NavigationService.Navigate(New Uri(selectedItem.StationId & ".xaml", UriKind.Relative))

注意:在模型中包含多个属性(本例中为StationStationId)要求您指定要在LongListSelector中显示的属性。如果您还不知道,请查看此link以了解具体方法。