2011-12-15 102 views
0

在我的Windows Phone 7.5(芒果)应用程序中,我有这种情况。我必须使用该导航像示于下面的图像分离的应用程序的东西部3个菜单按钮: enter image description hereWindows Phone中的三个导航菜单和循环导航

点击一个花费页面A,在B拍摄到B和同样为C.

页面A显示其他按钮,将用户带到特定的部分/页面。 同一网页B和C.页

问题/问题: 我相信这将会使用后退按钮时,会循环导航的问题。我想知道处理这种情况的最佳方法。

单程我能想到的是清理BackStack,我知道如何做到这一点,但想知道是否有更好的出路。

枢轴页面:我不确定是否应该使用Pivot Control。

其他复杂的方式:使用一个普通的页面,并基于按钮点击隐藏控件,而不是导航到新页面,只需显示与A或B或C相关的控件并隐藏不相关的内容。我不确定这是否是一种好方法,因为我对每个页面都没有特定的图像和动画,并且看起来很复杂。

回答

0

由于其他一些设计问题,Pivout不符合我的需求。

所以我放弃了使用类似上面的菜单的想法,而是创建了一个有3个按钮来导航的separte页面(home),并且如果用户想要更改该部分,他们会回到家中并从那里选择。

1

更好的用户体验,就是使用Pivot。用户讨厌点击按钮。了解Windows Phone的所有其他应用程序的工作原理,并且您将看到什么被认为是直观/本机体验。

+0

感谢途径帮助。我将不得不考虑枢轴,但现在我想我会将我的3个按钮移动到一个单独的页面。所以如果用户在A上并且需要去B或C,他们只需要GoBack并从那里选择。 – oms 2011-12-15 18:32:23

0

当用户沿特定路径导航时,您可以处理/覆盖/消耗后退按钮按下的事件。您可以使用NavigationServce.RemoveBackEntry()删除最近的日记帐分录。

在页面的一个页面(或全部,取决于您的导航可能性),onNavigatedTo()处理程序可以解决循环导航困境。你也可以把标记在查询字符串,识别用户选择导航

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e){ 
    NavigationService.Navigate(new Uri("/PageA.xaml?fromPageC=true")); 
} 

public override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    if(e.NavigationMode == NavigationMode.New && NavigationContext.QueryString.ContainsKey("resultsInCircular") 
{ 
    NavigationService.RemoveBackEntry(); // might have to repeat this a number of times  depending on the route that the user has taken 
}) 
}