2010-11-01 51 views
0

我有3页。第1页是搜索条件,第2页是列表,第3页是详细信息。WP7确定从哪个页面导航

如果我从第1页转到第2页,我想调用Web服务并将详细信息加载到页面上。

如果我从页面3转到页面2(即使用后退按钮),我不想重新加载数据,因为我已经有了它。

要确定页面2激活时该怎么做,我需要知道我来自哪里。

我看不到任何告诉我这个导航事件。

任何想法?

干杯

史蒂夫

+2

为什么不只是检查你是否已经有数据? – driis 2010-11-01 19:34:14

+0

Ye if(data == null)Load();这将是最好的 – 2010-11-01 20:24:11

+0

我不能检查我是否有数据,因为虚拟机是单身人士,但你的建议帮助我弄清楚如何使用dataloaded标志和使用navigatingcanceleventargs检查我是否回到我的列表页面或退出我的列表页面。 – 2010-11-01 21:51:29

回答

1

没有办法与API/SDK做到这一点的是。

但是,您可以让调用页面告诉page3是什么调用它。
如何做到这一点的一个例子是在查询字符串中包含一个条目。即

NavigationService.NavigateTo(new Uri("page3.xaml?from=page2", UriKind.Relative)); 

然后,在第3页:

string sourcePage; 

if (NavigationContext.QueryString.TryGetValue("from", out sourcePage)) 
{ 
    // test the value of sourcePage and act accordingly 
} 
+0

虽然这会导致一个小问题,但您的导航堆栈将保持不断增长并且正在增长,尽管用户他击中了 – viggity 2010-12-17 02:19:09

+0

@viggity号您为什么这么说? – 2010-12-17 11:25:44

+0

,因为你永远不会“回来”,你只会(导航服务考虑什么)一个新的页面。 – viggity 2010-12-22 17:35:48

1

或者,您可以添加新条目应用程序的资源字典,并通过重写的OnNavigatedTo方法来检索它的下一个页面上。

要添加条目:

App.Current.Resources.Add("from",2); 

要检索条目:

if(App.Current.Resources.Contains("from") 
{ 
    lastPage = (int)App.Current.Resources["from"]; 
} 

欲了解更多信息,请参阅查尔斯Petzold的书的第6章提供以下链接:
http://www.charlespetzold.com/phone/