Windows Phone удалить определенную запись BackStack

Я пытаюсь удалить конкретную запись BackStack из NavigationService.BackStack.

Я обнаружил, что есть один метод удаления предыдущей записи, то есть NavigationService.RemoveBackEntry();, но он удаляет все предыдущие записи из stack. Итак, мой вопрос: Как удалить конкретную обратную запись?

Как я могу удалить строку запроса из NavigationService.CurrentSource? Я хочу получить только Uri без Query String.

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


person Ajay    schedule 05.09.2013    source источник
comment
Вы не можете этого сделать и не должны этого делать, потому что это испортит ожидания людей относительно того, что происходит, когда вы нажимаете кнопку «Назад».   -  person Toni Petrina    schedule 05.09.2013


Ответы (2)


Вы не можете удалить конкретный объект заднего стека, потому что ваш текущий стек (текущая страница) может взаимодействовать только со своим соседним стеком, поэтому вы можете удалить только свой предыдущий объект стека. Вам нужно удалить стек во время следующей страницы NavigateTo().

person Abhishek    schedule 05.09.2013

Я могу сделать это с помощью этого кода. Вставьте это в событие page.Loaded:

int backstackcounter = this.NavigationService.BackStack.Count();

            for (int i = 0; i < backstackcounter; i++)
            {
               var previousPage = this.NavigationService.BackStack.FirstOrDefault();

                if (previousPage != null && !previousPage.Source.ToString().StartsWith("/LoginPage.xaml"))
                {
                    this.NavigationService.RemoveBackEntry();
                }
            }

«LoginPage.xaml» — это страница, которую я хочу оставить в бэкстеке.

person Freeubi    schedule 24.01.2014
comment
Вы не можете пройти BackStack таким образом. this.NavigationService.BackStack.FirstOrDefault() всегда будет давать вам первый элемент. плюс RemoveBackEntry() всегда будет удалять самый последний элемент. ТАК, если ваш последний элемент не является страницей входа, этот код никогда не будет работать. - person Muhammad; 20.03.2014