我正在尝试使用Windows Phone 8中的FlipTileData创建一个磁贴。我使用以下代码:
const string mainPage = "/MainPage.xaml";
...
Uri mp = new Uri(mainPage + "?" + "tileid=" + tileId, UriKind.Relative);
FlipTileData tileData = new FlipTileData();
tileData.Title = tileTitle;
tileData.BackgroundImage = new Uri("isostore:" + isourl);
tileData.SmallBackgroundImage = new Uri("isostore:" + isourl);
tileData.WideBackgroundImage = new Uri("isostore:" + isourl);
ShellTile.Create(mp, tileData);
这会在ShellTile.Create方法中抛出InvalidOperationException。没有其他具有相同导航URI的图块。我在这里做错了什么?
使用StandardTileData类可以正常使用此代码,不包括SmallBackgroundImage和WideBackgroundImage属性。
如果重要,完整的代码是:
const string mainPage = "/MainPage.xaml";
...
private void createbutton_Click(object sender, RoutedEventArgs e)
{
string tileId = new Random().Next().ToString();
Uri mp = new Uri(mainPage + "?" + "tileid=" + tileId, UriKind.Relative);
WriteableBitmap wbmp = new WriteableBitmap(tileGrid, null);
string isourl = "/Shared/ShellContent/" + tileId + ".jpg";
IsolatedStorageFileStream isfs = IsolatedStorageFile.GetUserStoreForApplication().CreateFile(isourl);
wbmp.SaveJpeg(isfs, 173, 173, 0, 100);
isfs.Close();
FlipTileData tileData = new FlipTileData();
tileData.Title = tileTitle;
tileData.BackgroundImage = new Uri("isostore:" + isourl);
tileData.SmallBackgroundImage = new Uri("isostore:" + isourl);
tileData.WideBackgroundImage = new Uri("isostore:" + isourl);
ShellTile.Create(mp, tileData);
}
答案 0 :(得分:1)
如果使用新的切片模板,则需要使用包含第三个参数的ShellTile.Create()
重载。
这应该可以解决问题:
ShellTile.Create(mp, tileData, true);
答案 1 :(得分:0)
您是否在Closing处理程序中调用此代码?
在Windows Phone 8中,使用Closing处理程序内的Create(Uri,ShellTileData)方法创建Tile将抛出InvalidOperationException。
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206947(v=vs.105).aspx
编辑:我猜不是,因为你说它适用于StandardTileData ......