我可以使用本地数据更新Mango中的实时图块吗?

Cri*_*ris 4 windows-phone-7 live-tile

我有一个使用本地SqlCe数据库的Mango WP7.5应用程序.我想添加一个LiveTile更新,显示根据当前日期和月份从本地数据库中获取的信息.

我发现的所有样本都通过从服务器下载远程图像来更新后台,但我只需要进行本地数据库查询并在我的磁贴中显示一个字符串.

我可以做吗?怎么样?

Hei*_*cht 7

是的你可以.你必须

  1. 生成包含您的文字信息的图像
  2. 将此图像保存到隔离的存储和
  3. 通过isostoreURI 访问它.

这是代码显示如何执行此操作(它更新应用程序平铺):

// set properties of the Application Tile
private void button1_Click(object sender, RoutedEventArgs e)
{
    // Application Tile is always the first Tile, even if it is not pinned to Start
    ShellTile TileToFind = ShellTile.ActiveTiles.First();

    // Application Tile should always be found
    if (TileToFind != null)
    {
        // create bitmap to write text to
        WriteableBitmap wbmp = new WriteableBitmap(173, 173);
        TextBlock text = new TextBlock() { FontSize = (double)Resources["PhoneFontSizeExtraLarge"], Foreground = new SolidColorBrush(Colors.White) };
        // your text from database goes here:
        text.Text = "Hello\nWorld";
        wbmp.Render(text, new TranslateTransform() { Y = 20 });
        wbmp.Invalidate();

        // save image to isolated storage
        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            // use of "/Shared/ShellContent/" folder is mandatory!
            using (IsolatedStorageFileStream imageStream = new IsolatedStorageFileStream("/Shared/ShellContent/MyImage.jpg", System.IO.FileMode.Create, isf))
            {
                wbmp.SaveJpeg(imageStream, wbmp.PixelWidth, wbmp.PixelHeight, 0, 100);
            }
        }

        StandardTileData NewTileData = new StandardTileData
        {
            Title = "Title",
            // reference saved image via isostore URI
            BackgroundImage = new Uri("isostore:/Shared/ShellContent/MyImage.jpg", UriKind.Absolute),
        };

        // update the Application Tile
        TileToFind.Update(NewTileData);
    }
}
Run Code Online (Sandbox Code Playgroud)