WP8 – Dynamische Kachel gestalten – PeriodicTile hinzufügen

Hallo Leute,

heute möchte ich euch zeigen, wie Ihr ganz einfach einen sogenannten „PeriodicTile“ hinzufügen könnt.
Vorweg sei gesagt, dass es prinzipiell folgende Arten von Tiles gibt:

  • Flip Tile
  • Iconic Tile
  • Cycle Tile

Vielleicht kommen zu einem späteren Zeitpunkt noch Blog Einträge zu den anderen Tile-Arten. Hier soll es jetzt, wie gesagt, um den Iconic-Tile gehen.

iconic

 

Der Iconic-Tile bietet alle drei unterstützen Tile-Größen (Small, Medium & Large) an.

Zu allererst muss man im WP8-Projekt in das WMAppManifest.xml gehen. Und dort die Unterstützung für Tiles aktivieren:

iconic_wma

 

In meinem Beispiel möchte ich nur die Größen Small und Medium unterstützen und  habe dafür die entsprechenden Grafiken hinterlegt. Die Abmessungen der Grafiken entnehmt bitte nachfolgendem Screenshot. Hält man sich nicht daran, gibt’s nachher verwaschene Tiles, was ich sehr unhübsch finde.

tile_sizes

 

Nun zum programmatischen Teil der Geschichte.

/// <summary>
        /// Updates the main tile.
        /// </summary>
        /// <param name="title">The title.</param>
        /// <param name="count">The count.</param>
        public async static Task UpdateMainTile(string title, int count)
        {
            await Task.Factory.StartNew(() =>
            {
                //Get application's main tile
                var mainTile = ShellTile.ActiveTiles.FirstOrDefault();


                if (null != mainTile)
                {
                    IconicTileData tileData = new IconicTileData()
                    {
                        Count = count,
                        BackgroundColor = Color.FromArgb(0, 151, 193, 1),
                        Title = title,
                        IconImage = new Uri("/Assets/Tiles/IconicTileMediumLarge.png", UriKind.RelativeOrAbsolute),
                        SmallIconImage = new Uri("/Assets/IconicTileSmall.png", UriKind.RelativeOrAbsolute),
                        WideContent1 = "urlaube in genehmigung",
                    };

                    mainTile.Update(tileData);
                }

            });
        }

In meinem Beispiel möchte ich ein möglicherweise bereits existierendes Tile aktualisieren, keine neuen (oder weiteren) Tiles hinzufügen. Sofern ein Tilevorhanden ist (mainTile != null), erzeuge ich ein neues IconicTileData Objekt, welches ein paar Eigenschaften besitzt, am interessantesten ist bei einem IconicTile natürlich der Count. Aber auch die anderen Properties möchte ich kurz erklären:

iconic_desc

Viel Spaß beim nachmachen.

Cheers,
Chris

Leave a reply