如何在Windows Phone 8中的页面之间传递非字符串参数?

Mr.*_*oof 11 windows-phone windows-phone-8

我正在努力将Windows应用商店应用转换为Windows Phone 8.对于WinRT,您可以在调用frame.navigate时将任何对象作为参数传递.(frame.navigate(type sourcePageType,object parameter))

导航似乎对Windows手机的工作方式不同,你可以通过调用uri来导航,例如:frame.navigate(new uri("mypage.xaml",UriKind.Relative))

Windows文档指出,您可以通过将字符串添加到uri来传递字符串作为参数.

是否有一种可以接受的方式在页面之间传递复杂的对象我还没有找到?

Zik*_*Zik 15

我最终扩展了NavigationService类,如下所示:

public static class NavigationExtensions
{
    private static object _navigationData = null;

    public static void Navigate(this NavigationService service, string page, object data)
    {
        _navigationData = data;
        service.Navigate(new Uri(page, UriKind.Relative));
    }

    public static object GetLastNavigationData(this NavigationService service)
    {
        object data = _navigationData;
        _navigationData = null;
        return data;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您将调用NavigationService.Navigate("mypage.xaml", myParameter);源页面,并在目标页面调用的OnNavigatedTo方法中var myParameter = NavigationService.GetLastNavigationData();获取参数数据.


gre*_*oll 0

我在应用程序中所做的是将某种标识符(索引、GUID 等)作为字符串传递,然后在要导航到的页面的 OnNavigedTo() 方法中查找该对象。因此,对象将保留存储在 ViewModel(或任何地方)中,您只需传递一个字符串即可。