使用FlipTileData的ShellTile.Create会抛出InvalidOperationException吗?

时间:2013-02-03 18:35:45

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

我正在尝试使用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);
    }

2 个答案:

答案 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 ......