c# - 使用来自控件的动态图像为 WP8 创建动态磁贴会引发 "NotSupportedException"

标签 c# windows-phone-8 isolatedstorage live-tile dynamic-image-generation

我使用以下代码获取自定义用户控件,从中制作位图,然后将其保存到独立存储以用于 WP8 动态磁贴。

public static void UpdateTile()
{
    var frontTile = new LiveTileRegular(); // Custom Control
    frontTile.Measure(new Size(173, 173));
    frontTile.Arrange(new Rect(0, 0, 173, 173));

    var bmp = new WriteableBitmap(173, 173);
    bmp.Render(frontTile, null);
    bmp.Invalidate();

    const string filename = "/LiveTiles/LiveTileRegular.jpg";

    using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (!isf.DirectoryExists("/LiveTiles"))
        {
            isf.CreateDirectory("/LiveTiles");
        }

        using (var stream = isf.OpenFile(filename, FileMode.OpenOrCreate))
        {
            bmp.SaveJpeg(stream, 173, 173, 0, 100);
        }

        Debug.WriteLine("Image Exists: " + (isf.FileExists(filename) ? "Yes" : "No")); // Displays "Yes"
    }

    ShellTile.ActiveTiles.First().Update(new FlipTileData
    {
        Title = "Title",
        BackgroundImage = new Uri("isostore:" + filename, UriKind.Absolute),
    }); // Throws a NotSupportedException
}

NotSupportedExceptionShellTile.ActiveTiles.First().Update() 方法上被抛出,消息非常非描述性。

有什么我明显做错的地方吗?

最佳答案

“TargetInnvocationException”异常实际上隐藏了“NotSupportedException”异常的潜在问题,这是我在将 ShellTile.ActiveTiles.First().Update() 移出 UI 线程后发现的。

异常仍然没有描述问题是什么,但在翻阅不同的论坛和文档后,我发现动态创建的图像的路径在与 Live Tiles 一起使用时非常重要。

如果您将独立存储中的图像用于动态磁贴或外壳磁贴,则基础文件夹必须是

/Shared/ShellContent

改变之后

const string filename = "/LiveTiles/LiveTileRegular.jpg";

const string filename = "/Shared/ShellContent/LiveTileRegular.jpg";

一切正常。

我们的 Windows Phone 开发人员能否获得更好的异常消息传递?!? :)

关于c# - 使用来自控件的动态图像为 WP8 创建动态磁贴会引发 "NotSupportedException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579351/

相关文章:

c# - 如何在 Windows Phone 8 应用程序中检查互联网连接可用性

windows-phone-7 - 当前运行的应用程序 GUID 的 Windows Phone ISETool.exe 快捷方式

c# - 从独立存储加载文件的最佳方式

.net - 在 IIS 服务器上使用 IndependentStorage

c# - 将多个视频文件与延迟的音频文件连接起来

c# - MVC 5 使用 actionlink 将模型从 View 传递到 Controller

c# - Asp.net MVC 2 Request.files [""] 总是返回 null

c# - Entity Framework /C# : multiple includes from string array?

c# - LongListMultiSelector 阻止所选项目的手势事件

c# - 当引用的 .NET 依赖项版本不匹配时,如何解析引用?