我使用实时标题来启动特定页面:
主屏幕中的动态磁贴 - 启动 - >任务后的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));
}
更新
主屏幕中的动态磁贴 - 启动 - > P1(PageTakePic.xaml) - > P2 - >的MainPage
使用以下方法无法在MainPage中工作。它仍然进入循环:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
NavigationService.RemoveBackEntry();
}
答案 0 :(得分:1)
这是Mango中Live Tiles的Deep Links需要考虑的常见问题。您需要做的是在点击主页面时删除BackStack条目,以便点击后退按钮将退出应用程序。
以下是可能有用的代码段:
void ClearBackStack()
{
while (NavigationService.CanGoBack)
{
NavigationService.RemoveBackEntry();
}
}
答案 1 :(得分:0)
如果您通过导航到主页来处理错误,例如:
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
然后有可能在你导航回来的某个时刻 - 你得到一个错误并转而导航到MainPage,所以你的实时图块会将你带到PageTakePic,然后当你按下时 - 导航失败而你向前导航到MainPage 。然后后退按钮会让你回到PageTakePic等等......