创建辅助磁贴时操作无效错误

时间:2013-12-22 18:22:38

标签: c# windows-phone-8 windows-phone

我想在起始页面添加辅助磁贴,但是当我尝试第二次创建相同的磁贴时会出现此错误:

  

由于对象的当前状态,操作无效。

IconicTileData iconicTile = new IconicTileData
{
    Title = "second page",
    IconImage = uri,
};

ShellTile.Create(new Uri("/SecondPage.xaml", UriKind.Relative),iconicTile,false);

它首次运行此代码,但是当磁贴存在并且我再次运行此代码时,我得到了该错误。

也许我需要检查这个磁贴是否存在,但是如何?

1 个答案:

答案 0 :(得分:4)

你在这里遇到了几个问题,所以让我先从要求开始

(as outlined in this near duplicate question)

  • 每个Live Tile必须指向唯一的URI位置。

  • 每次创建辅助磁贴时,用户都将进入其主屏幕进行查看。

  • 您不能一次创建多个辅助磁贴。限制 允许的次要活动瓷砖数量。

您遇到了错误,因为您正在创建一个带有重复URI的第二个磁贴。

克服这种情况的一种方法可能是在URI中使用一个随机数的参数。这不会影响导航,应该允许您拥有任意数量的导航。

以下是使用OnNavigatedTo事件的覆盖的示例。

当您启动应用程序时,它会创建一个新的磁贴。只需点击图块,它就会导航回来创建一个新图块。

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

     IconicTileData iconicTile = new IconicTileData()
     {
         Title = "second page",

     };

     ShellTile.Create(new Uri("/MainPage.xaml?ran=" + (new Random().Next()).ToString(), UriKind.Relative), iconicTile, false);

}