0

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

2 回答 2

1

如果使用新的磁贴模板,您需要使用ShellTile.Create()包含第三个参数的重载。

这应该可以解决问题:

ShellTile.Create(mp, tileData, true);
于 2013-02-14T15:18:13.757 回答
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 一起工作......

于 2013-02-03T19:23:17.003 回答