我最近为我的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
答案 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))
注意:在模型中包含多个属性(本例中为Station
和StationId
)要求您指定要在LongListSelector
中显示的属性。如果您还不知道,请查看此link以了解具体方法。