Как открыть / закончить просмотр в Windows Phone 7 - PullRequest
4 голосов
/ 27 июля 2011

Я новичок в стеке разработки Silverlight в WP7 и мне нужно отбросить вид, когда я загружаю другой.

//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 я не уверен, как удалить это действие

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 27 июля 2011

Вы можете завершить все, что вы делаете, в обработчике Page.OnNavigatedFrom , если вам действительно это нужно. Но я думаю, что вы должны объяснить, какую логику вы хотите закончить. Асинхронные операции в других потоках требуют отмены токена отмены, и операции рендеринга пользовательского интерфейса автоматически прекращаются при изменении представления.

Но помните , что WP7 использует кнопку возврата и, таким образом, сохраняет состояние навигации. Это означает, что пользователь ожидает, что он сможет нажать назад, чтобы вернуться к предыдущему виду, и он будет выглядеть точно так же, как когда он покинул его.

-

Поток того, как обычно это происходит:

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
2 голосов
/ 27 июля 2011

Просто чтобы прояснить: я использовал этот подход, чтобы не запутать пользователя.

С помощью подхода WP7 я добавил простой MessageBox, чтобы пользователь мог знать, что логин действителен, прежде чем вернуться назад.поэтому они знают, что логин был законным:)

var result = MessageBox.Show("","Login Successful!", MessageBoxButton.OK);

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