当导航到一个页面时,前一页中对象的值是否会丢失?当我从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
答案 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: