Есть ли способ очистить навигационную службу или не зарегистрировать фрейм? - PullRequest
0 голосов
/ 04 сентября 2011

Я разрабатываю приложение для Windows 7, и мне нужно заблокировать страницу .. мои решения не регистрируют этот кадр или не удаляют все кадры в обратном направлении.

1 Ответ

2 голосов
/ 04 сентября 2011

Предполагаю, что вы имеете в виду, что у вас есть страница в Back-stack, которую вы хотите удалить -

В новом Mango SDK есть метод, который вы можете попробовать NavigationService.RemoveBackEntry

Однако может быть проще просто использовать логическое значение и зарегистрироваться OnNavigatedTo:

На странице, на которую нужно вернуться> 1 страниц:

в App.xaml.cs:

public static bool IsBackwardNavigation = false;
public static string PageContext = string.Empty;

Page2.xaml.cs:

public void YourFunction()
{
App.PageContext = "MainPage";
App.IsBackwardNavigation = true;

if (NavigationService.CanGoBack)
   NavigationService.GoBack();
}

И на каждой странице OnNavigatedTo:

Page1.xaml.cs:
    string Page1 = "Page1";

        protected override void OnNavigatedTo(object sender, NavigationEventArgs e)
        {
           if (App.IsBackwardNavigation)
    {

    if (!Page1.Equals(App.NavigationContext)
        {
//since this page's name is not the correct page, the page will go back again.
        if (NavigationService.CanGoBack)
           NavigationService.GoBack();
        }
        else
        {
//this is the page we're trying to get to
        App.IsBackwardNavigation = false;
        App.NavigationContext = string.Empty;


        }

    } 
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...