Могу ли я обновить живую плитку в Mango, используя локальные данные? - PullRequest
4 голосов
/ 06 ноября 2011

У меня есть приложение Mango WP7.5, которое использует локальную базу данных SqlCe.Я хотел бы добавить обновление LiveTile, которое отображает информацию, взятую из локальной БД на основе текущего дня и месяца.

Все найденные образцы обновляют фон, загружая удаленные изображения с серверов, но я бы простонужно сделать запрос к локальной базе данных и показать строку в моей плитке.

Могу ли я это сделать?Как?

1 Ответ

7 голосов
/ 07 ноября 2011

Да, вы можете.Вы должны

  1. создать изображение, содержащее вашу текстовую информацию
  2. сохранить это изображение в изолированном хранилище и
  3. получить к нему доступ через isostore URI.

Вот код, показывающий, как это сделать (обновляет плитку приложения):

// 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);
    }
}
...