我想在起始页面添加辅助磁贴,但是当我尝试第二次创建相同的磁贴时会出现此错误:
由于对象的当前状态,操作无效。
IconicTileData iconicTile = new IconicTileData
{
Title = "second page",
IconImage = uri,
};
ShellTile.Create(new Uri("/SecondPage.xaml", UriKind.Relative),iconicTile,false);
它首次运行此代码,但是当磁贴存在并且我再次运行此代码时,我得到了该错误。
也许我需要检查这个磁贴是否存在,但是如何?
答案 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);
}