Живое название уходит в бесконечный цикл - PullRequest
1 голос
/ 19 ноября 2011

Я использую живой заголовок для запуска определенной страницы:

Живая плитка на главном экране --launch -> P1 после задания и переходите -> P2 -> MainPage

Когда вы нажимаете кнопку «Назад» в MainPage, приложение не закрывается, вместо этого оно переходит к P2 в виде петли.

Вот код:

        try
        {
            ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("PageTakePic.xaml"));

            if (TileToFind == null)
            {

                StandardTileData NewTileData = new StandardTileData
                {

                    //BackgroundImage = new Uri("Red.jpg", UriKind.Relative),
                    //--front tile
                    Title = "Take Pic",
                    //Count = 12,

                    BackTitle = "Quick Access",
                    //--40 char
                    BackContent = "Take Pic",
                    //BackBackgroundImage = new Uri("Blue.jpg", UriKind.Relative)
                };

                // Create the Tile and pin it to Start. This will cause a navigation to Start and a deactivation of our application.
                ShellTile.Create(new Uri("/PageTakePic.xaml", UriKind.Relative), NewTileData);
            }
            else
            {
                MessageBox.Show("A live title created for this service already.");
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show("Try again. Error encountered: " + ex.Message);
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }

Обновление:

Живая плитка на главном экране --launch -> P1 (PageTakePic.xaml) -> P2 -> MainPage

, используя метод ниже, не работающий в MainPage.Это все еще входит в цикл:


protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    NavigationService.RemoveBackEntry();
}

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Это общая проблема, которую следует рассмотреть с Deep Links от Live Tiles в Mango.Что вам нужно сделать, это удалить записи BackStack, когда вы нажмете на своей главной странице, так что нажатие кнопки назад приведет к выходу из приложения.

Вот фрагмент кода, который может помочь:

    void ClearBackStack()
    {
        while (NavigationService.CanGoBack)
        {
            NavigationService.RemoveBackEntry();
        }
    }
0 голосов
/ 19 ноября 2011

Если вы обрабатываете ошибки, переходя на домашнюю страницу, как в вашем примере:

NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

Тогда возможно, что в какой-то момент, когда вы вернетесь назад - вы получите ошибку и перейдете вместо MainPage, так что ваша живая плитка приведет вас к PageTakePic, затем, когда вы нажмете назад - навигация не удастся, и вы перейдете вперед вместо MainPage. , Затем кнопка «Назад» возвращает вас к PageTakePic и так далее ...

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