windows phone 8导航中对象的值会发生什么变化?

时间:2015-08-11 11:31:20

标签: windows-phone-8

当导航到一个页面时,前一页中对象的值是否会丢失?当我从page-1导航到page-2然后导航到page-2时,我正在调用page-1中返回的值为null的方法。

为什么会这样?

第一页:

public Offer qw()
{
    return off;
} 
NavigationService.Navigate(new Uri("/Page1.xaml" ,UriKind.Relative));

第2页:

var ob=obj.qw();
values in ob=null

2 个答案:

答案 0 :(得分:0)

如果您在页面2中创建protected override void OnNavigatedFrom(NavigationEventArgs e) { // NavigationEventArgs returns destination page Page destinationPage = e.Content as Page2; if (destinationPage != null) { // Change property of destination page destinationPage.Page1=this; } } 字段,则表示您正在创建page1的新实例,因此显然它与前一页不同。

所以如果你想在页面后面执行这个功能意味着你可以在你的page2中执行此操作

{{1}}

答案 1 :(得分:0)

这是Windows Phone应用程序的错误逻辑。如果您需要将某些对象从 Page_1 发送到 Page_N ,则应使用 PhoneApplicationService ,如果您发送一些简单的对象类型(数字,字符串, bools)你可以使用 NavigationContext

示例PhoneApplicationService:

   // Page_1 before navigate to Page_N
   PhoneApplicationService.Current.State[key] = value; // key(string); value(any object)

   // Page_N
   object o;
   PhoneApplicationService.Current.State.TryGetValue(key, out o)
   // then do what you want with you object - o

示例NavigationContext:

   // Page_1 before navigate to Page_N
   NavigationService.Navigate(new Uri("/SecondPage.xaml?msg=SomeMessageText", UriKind.Relative));

   // Page_N
   protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            string msg = "";

            if (NavigationContext.QueryString.TryGetValue("msg", out msg))

                string yourMessage = msg;


        }

请参阅MSDN: