1

我需要使用 Object 而不是 String 从一个 xaml 页面导航到另一个页面。

目前的代码是:

  private void Border_ManipulationStarted(object sender,    System.Windows.Input.ManipulationStartedEventArgs e)
{
     string uri = "/PhonePageOne.xaml?Text=";
     uri += txtBox.Text;
     NavigationService.Navigate(new Uri(uri, UriKind.Relative));
}

我不想在 url 中传递文本,我需要传递一个对象而不是像下面这样的对象,有什么方法可以做到这一点?

Person p = new person();
uri+=p
4

3 回答 3

11

在第一页中执行以下操作:

PhoneApplicationService.Current.State["param"] = p;
NavigationService.Navigate(new Uri("/PhonePageOne.xaml", UriKind.Relative));

并在第二个检索参数:

Person p = PhoneApplicationService.Current.State["param"] as Person;

PhoneApplicationService.State字典是一个临时存储位置,它会一直存在,直到您的应用程序被停用。

例如,其他选项可能是在其中声明一个静态成员,App.xaml.cs并使用它来保存一个页面中的对象并从第二个页面中检索。

于 2013-08-29T06:48:36.230 回答
0

虽然 Phone 应用程序状态方法可能有效,但当您从休眠状态返回时,它会引发异常。它不是为存储大型对象而设计的。更好的方法是重写 navigationservice 类的导航功能。这是一个链接,可帮助您指导它:-

http://www.kunal-chowdhury.com/2013/10/passing-object-to-wp-navigation-service.html

于 2014-04-14T05:11:57.947 回答
0

您可以使用 Messenger --> MVVM Light,它是 MVVM 的高级用途。在你的视图模型中声明一个信使/注册信使/发送你想要的:) http://mvvmlight.codeplex.com/

于 2013-08-29T11:52:53.867 回答