Navigation 如何在Windows Phone 7中弹出/完成视图

Navigation 如何在Windows Phone 7中弹出/完成视图,navigation,windows-phone,Navigation,Windows Phone,我是WP7中Silverlight开发堆栈的新手,在加载另一个视图时需要将一个视图吹走 //some good stuff happens so I need to load the next activity/view NavigationService.Navigate(new Uri("/Checkout.xaml", UriKind.Relative)); 但是在导航之前或之后,我需要弹出/完成当前活动 在Android中,我会调用finish,在objective-c中,我会简单地从

我是WP7中Silverlight开发堆栈的新手,在加载另一个视图时需要将一个视图吹走

//some good stuff happens so I need to load the next activity/view
NavigationService.Navigate(new Uri("/Checkout.xaml", UriKind.Relative));
但是在导航之前或之后,我需要弹出/完成当前活动

在Android中,我会调用finish,在objective-c中,我会简单地从堆栈中弹出这个视图控制器。。。但在WP7中,我不确定如何删除此活动


提前谢谢你

如果你真的需要,你可以在处理程序中完成你正在做的任何事情。但我认为你应该解释一下你想要结束的是什么样的逻辑。其他线程中的异步操作需要取消取消令牌,并且当您更改视图时,UI呈现操作将自动结束

但是请记住,WP7使用了后退按钮,因此保持了导航状态。这意味着用户希望能够按back键,返回到上一个视图,并使其看起来与离开视图时完全相同

--

通常情况下,其结果如何:

App.xaml

  - MainPage.xaml (Your initial view)

     IF (UserIsLoggedIn)
        - Display Content
     ELSE
        - NavigateService.Navigate(new Uri("/Login.xaml"))

   - Login.xaml

     IF (LoginComplected)
         NavigateService.GoBack()
     ELSE
         DisplayError

我只是想说清楚,我使用这种方法是为了避免用户感到困惑

使用WP7方法,我添加了一个简单的MessageBox,让用户在返回之前知道登录是有效的,这样他们就知道登录是合法的:)


同意-但我需要这种行为,因为我将删除一个登录活动,如果用户回击,他们可能会再次登录,这会给我带来痛苦:)在这种情况下,我如何才能终止堆栈上的上一个活动?您不能“终止”视图。您在此处处理登录的方法是错误的。正确的解决方案是在需要登录时导航到登录视图,登录完成后,使用NavigationService.GoBack(),这样用户就返回到应用程序的主视图。这样,视图将从导航状态中删除。另外,它也不是WP7dev的“活动”。这是一个Android专有的名称(而且是个糟糕的名称!)取而代之的是一个视图或页面,所有人都会理解你;-)明白-我能适应你提到的风格。谢谢你的帮助!虽然这是一个不错的解决方案,但我还没有看到任何其他类似的应用程序。大多数操作完成后,只需离开登录屏幕。从移动用户体验的角度来看,用户希望事情能够正常运行,只有当事情无法正常运行时才会得到通知。因此,对于某些用户来说,这似乎是一个毫无意义的烦恼;-)
var result = MessageBox.Show("","Login Successful!", MessageBoxButton.OK);

            if (result == MessageBoxResult.OK)
            {
                NavigationService.GoBack();  
            }