我只想添加上面 Zik 提供的最佳答案的 VB.net 版本。一旦我弄清楚如何将他的代码翻译成 VB,我立即可以使用类似于 WinRT/Windows 8 方式的导航。
我使用以下代码创建了一个模块:
Module NavigationExtensionsModule
Sub New()
End Sub
Private _navigationData As Object = Nothing
<System.Runtime.CompilerServices.Extension> _
Public Sub Navigate(service As NavigationService, page As String, data As Object)
_navigationData = data
service.Navigate(New Uri(page, UriKind.Relative))
End Sub
<System.Runtime.CompilerServices.Extension> _
Public Function GetLastNavigationData(service As NavigationService) As Object
Dim data As Object = _navigationData
_navigationData = Nothing
Return data
End Function
End Module
然后像这样导航到另一个页面:
NavigationService.Navigate("pagename.xaml", ObjectToPassToThePage)
最后,要在我的另一个页面中获取该对象,在 OnNavigatedTo 子中:
ThisPageData = NavigationService.GetLastNavigationData()
Me.DataContext = ThisPageData
归功于 Zik 的实际答案。