Can I update a live tile in Mango using local data?

前端 未结 1 1997
离开以前
离开以前 2021-01-13 21:47

I have a Mango WP7.5 app that uses a local SqlCe database. I would like to add a LiveTile update that shows info taken from the local DB based on current day and month.

相关标签:
1条回答
  • 2021-01-13 22:17

    Yes, you can. You have to

    1. generate an image containing your textual information
    2. save this image to isolated storage and
    3. access it via isostore URI.

    Here is code showing how to do this (it updates the Application Tile):

    // 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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题