【问题标题】:Generating a secondary tile with image not showing image immediately生成带有图像的辅助图块不立即显示图像
【发布时间】:2013-09-08 09:08:55
【问题描述】:

将新生成的图像添加到辅助图块时,最初找不到它 - 为什么以及如何修复它?

全文

您好,我正在开发一个 Windows Phone 应用程序,该应用程序可以在手机的主屏幕上创建辅助动态磁贴。

由于目前没有简单的方法使用给定的 XAML 生成辅助活动磁贴,因此我执行以下操作:

  • 使用给定的 XAML 创建一个 UserControl 并将其数据绑定到我的数据
  • 数据绑定到图片后使用WriteableBitmap写入。
  • 使用 PNGWriter 将其写入隔离存储
  • 使用生成的isostore:/ url 创建动态磁贴。

有点有效,问题是创建瓷砖时它没有显示,只有在时间过去后,瓷砖才突然正确显示。

我使用以下代码进行生成:

public static void GenerateMediumTile(DashboardViewModel source)
{
    var image = new LiveTileMedium() {DataContext = source};
    image.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
    image.Arrange(new Rect(0,0,336,336));
    var  bitmap = new WriteableBitmap(336,336);
    bitmap.Render(image,new TranslateTransform());
    bitmap.Invalidate();
    using (var fileStore = IsolatedStorageFile.GetUserStoreForApplication())
    {
        var file = fileStore.OpenFile("Shared/ShellContent/tile_" + source.Ticker + "_medium.png", FileMode.Create);
        bitmap.WritePNG(file.AsOutputStream().AsStreamForWrite());
    }   
}

然后是创建图块的代码:

var largeImageFile = isostoreSharedShellcontentTile + tileImage.Ticker + "_big.png";

var oFliptile = new FlipTileData
{
    Title = "",
    BackTitle = "",
    BackContent = "",
    SmallBackgroundImage = new Uri("/Assets/Matrial/small_tile159x159.png", UriKind.RelativeOrAbsolute),
    BackgroundImage = new Uri(mediumImageFile, UriKind.Absolute),
    ...

ShellTile.Create(new Uri(url, UriKind.Relative), oFliptile, true);

这是我创建磁贴时的样子,然后经过一段时间后我进入另一个应用程序。

【问题讨论】:

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


    【解决方案1】:

    这只是一个猜测,但也许释放 fileStore 不会释放 file — 一旦垃圾回收发生,它就会发生,但在那之前,无法读取文件。所以:

    using (var fileStore = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (var file = fileStore.OpenFile("Shared/ShellContent/tile_" + source.Ticker + "_medium.png", FileMode.Create))
        {
            bitmap.WritePNG(file.AsOutputStream().AsStreamForWrite());
        }
    } 
    

    【讨论】:

    • 这为我解决了问题。我认为关闭商店也会关闭文件。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多