2011-03-28 64 views
4

这是参照Windows Phone 7 close application我为什么要离开我的Silverlight的手机应用

如果我有页-A - >网页-B(即页面-A allowijg导航页-B)在页面 - B,我有一些控制,带我到Page-C,页面-D,页面-E,页面-F等

如果我在Page-F上,按下后退键我希望用户到达Page-A(所以,我重写了OnBackKeyPressed)。现在,当在页面A上时,如果用户再次按下了回退键,他又被带到Page-B

因此,当用户在页面-A上按下返回键时他不能退出应用程序,页面A和页面B同时按下回车键

这是不一致的用户expereince。

从讨论中,我明白在Silverlight中没有(正确的)方式退出应用程序。那么,我是不是以不正确的方式设计应用程序,我有很多子页面需要显示,但是我希望用户通过覆盖后面的键来到达主页面之一。

回答

1

如果我正确地理解了您的问题,您将遇到循环导航问题。换句话说,当你到达“Page-A”时,你希望应用程序退出。在这种情况下,你应该definetly看看微软这几招圆形导航工作:

Solving Circular Navigation

使用是使用,而不是创建新页面弹出窗口的用户导航到另一种方法,这种方式你不必担心处理后退堆栈。

看看这个Creating a custom popup in WP7

让我知道这是否有帮助。

+0

截至目前,我已经重新安排了应用程序,以便不从页面C创建单独的页面到页面F.而是导航到不同的页面,我现在正在更新页面B本身在每个按钮操作上的布局。但是,是的,这个解决方案绝对是我正在寻找并肯定会尝试 – abnvp 2011-03-29 01:17:30

+0

@abhinav是的,这是最好的方式去。非线性导航服务更像是最后的手段。如果可能的话应该避免。 – loyalpenguin 2011-03-29 01:52:29

2

看一看Non-linear Navigation Service;它意味着解决类似于你似乎拥有的循环导航问题。

不知道你想要实现的细节很难提出替代方案,但也许你应该看看你的应用程序的设计,以查看从页面F到页面A的导航是否在后面的按键可以避免。

发布您为什么觉得这是必要的细节可能允许其他人建议替代实现。

4

你可以做的一件事情是,不是覆盖页面F上的OnBackKeyPressed,而是覆盖页面B上的OnNavigatedTo方法,以便通过后台向页面A再转一页。这样,你将更自然地向上移动堆栈。正如你发现的那样,如果你重写一次后退键以重新路由某人,那么你很可能不得不每次都这样做。

这个解决方案的唯一问题是,WP7没有一个简单的方法来知道你刚从哪里来。我所做的是,每当我进入新页面时,我都会缓存我要离开的页面的URI。

+1

+1,这是我在我的应用程序中所做的;它需要用户登录,我有'墓碑'超时设置。因此,如果应用程序在被重新激活之前已经墓碑化太久,我只需向后导航直到登录页面到达。 – Praetorian 2011-03-28 17:41:42