LiveKacheln für VB und C#

    • Modern UI

      LiveKacheln für VB und C#

      In diesem Tutorial möchte ich die absoluten Grundlagen der Kachelupdates erklären und was mir da am wichtigsten vorkommt.

      Was lernt man in diesem Tutorial?
      Wie man einfache bisher nur quadratische Livekacheln anhand dieser Templates erstellt. Außerdem Wie man die Livekachel wieder löscht und ein Ablaufdatum einstellt.

      Hintergrundwissen
      Die Livekacheln werden über einfache XML-Schemata definiert. Im Prinzip läuft das ganze so ab:
      1). Benötigte Imports festlegen
      2). XML-Schema anhand eines der Templates erstellen
      3). Ablaufzeit festlegen in Sekunden, Minuten oder Tagen. Wenn man das nicht macht wird die Livekachel nach drei Tagen wieder gelöscht. Dann die Kachel vom TileUpdateManager updaten lassen.
      4). Kachel löschen.

      Wie ihr seht ist das Tutorial sehr einfach gehalten und eher für Leute gedacht, die sich nicht sooo viel mit dem Thema Livekacheln beschäftigen wollen. Wer sich näher mit dem ganzen näher beschäftigen will, guckt sich am besten
      dieses Tutorial an.

      Also fangen wir an: (Im ersten Expander der VB Code, im zweiten der C# Code)

      0.5). Neues Projekt "LiveKachel" in eurer bevorzugten Sprache erstellen. (Leere App)

      1). Benötigte Imports
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Imports Windows.UI.Notifications
      2. Imports Windows.Data.Xml.Dom

      Spoiler anzeigen

      VB.NET-Quellcode

      1. using Windows.UI.Notifications;
      2. using Windows.Data.Xml.Dom;


      1.1). TestOberfläche erstellen und die benötigten Bilder hinzufügen:
      Die Oberläche, die mir dafür jetzt gut vorkam:

      Quellcode

      1. <Button Content="XML erstellen" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="101" Width="252" Tapped="XML_Erstellen_Tapped"/>
      2. <Button Content="Livekachel ändern" HorizontalAlignment="Left" Margin="10,116,0,0" VerticalAlignment="Top" Height="101" Width="252" Tapped="LiveKachelAendern_Tapped"/>
      3. <Button Content="LiveKachel löschen" HorizontalAlignment="Left" Margin="10,657,0,0" VerticalAlignment="Top" Height="101" Width="252" Tapped="LiveKachelLoeschen_Tapped"/>


      Das Bild welches ich mir in die Kachel geladen habe könnt ihr im Anhang finden. Dann erstellt ihr euch im Projektmappenexplorer einen Ordner "images" und fügt das Bild da ein. Oder ihr nehmt ein eigenes (150x150).
      Ihr könnt das Bild auch auf euren Webserver hochladen und dann später die URL des Bildes eingeben.


      2). Xml-Schema anhand eines der Templates erstellen. Hier wähle ich als erstes einmal "TileSquareImage". Da wird einfach nur ein einziges dickes quadratisches Bild in die Kachel geladen. Bei den anderen Templates guckt ihr euch am besten einfach einmal die XML-Struktur an, dann sieht man schon, welche Elemente man noch anpassen muss.
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Private tileXml As XmlDocument
      2. Private Async Function XML_Erstellen_Tapped(sender As Object, e As TappedRoutedEventArgs) As Task
      3. 'Hier wird jetzt das XML Gerüst erstellt:
      4. tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage)
      5. 'Jetzt wird zur besseren Veranschaulichung das ganze nochmal ausgegeben
      6. Await New Windows.UI.Popups.MessageDialog(tileXml.GetXml()).ShowAsync()
      7. 'Als nächstes wird direkt das Bild hinzugefügt
      8. 'Es sollte schon im Ordner "images" liegen:
      9. 'Das gibt jetzt alle Attribute des Bildes zurück:
      10. Dim tileImageAttributes As XmlNodeList = tileXml.GetElementsByTagName("image")
      11. DirectCast(tileImageAttributes(0), XmlElement).SetAttribute("src", "ms-appx:///images/Square.png")
      12. 'Falls ihr immer ein Bild von eurem Server laden wollt, einfach hier den Link davon angeben
      13. DirectCast(tileImageAttributes(0), XmlElement).SetAttribute("alt", "Unsere Beschreibung der Beispielgrafik")
      14. 'Damit die Blinden und halbblinden was zu sehen haben, hier natürlich noch die Beschreibung angeben ^^
      15. 'Jetzt ist das Zuweisen der Elemente fertig
      16. 'Also nochmal kurz das Ergebnis ausgeben:
      17. Await New Windows.UI.Popups.MessageDialog(tileXml.GetXml()).ShowAsync()
      18. End Function

      Spoiler anzeigen

      VB.NET-Quellcode

      1. XmlDocument tileXml;
      2. private async void XML_Erstellen_Tapped(object sender, TappedRoutedEventArgs e)
      3. {
      4. //Hier wird jetzt das XML Gerüst erstellt:
      5. tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage);
      6. //Jetzt wird zur besseren Veranschaulichung das ganze nochmal ausgegeben
      7. await new Windows.UI.Popups.MessageDialog(tileXml.GetXml()).ShowAsync();
      8. //Als nächstes wird direkt das Bild hinzugefügt
      9. //Es sollte schon im Ordner "images" liegen:
      10. //Das gibt jetzt alle Attribute des Bildes zurück:
      11. XmlNodeList tileImageAttributes = tileXml.GetElementsByTagName("image");
      12. ((XmlElement)tileImageAttributes[0]).SetAttribute("src", "ms-appx:///images/Square.png"); //Falls ihr immer ein Bild von eurem Server laden wollt, einfach hier den Link davon angeben
      13. ((XmlElement)tileImageAttributes[0]).SetAttribute("alt", "Unsere Beschreibung der Beispielgrafik"); //Damit die Blinden und halbblinden was zu sehen haben, hier natürlich noch die Beschreibung angeben ^^
      14. //Jetzt ist das Zuweisen der Elemente fertig
      15. //Also nochmal kurz das Ergebnis ausgeben:
      16. await new Windows.UI.Popups.MessageDialog(tileXml.GetXml()).ShowAsync();
      17. }


      3). Kachel updaten und Ablaufzeit festlegen (Wenn gewünscht, sonst läuft das Ding nach drei Tagen von alleine aus)
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Private Sub LiveKachelAendern_Tapped(sender As Object, e As TappedRoutedEventArgs)
      2. 'Das wird mithilfe einer TileNotification geschehen
      3. 'Die erstellen wir auch erstmal:
      4. Dim tileNotification As New TileNotification(tileXml)
      5. 'Wie man sieht ist unsere XML-Datei als Parameter übergeben worden
      6. 'Jetzt wird angegeben, dass der Inhalt nach 10 Sekunden wieder von der Kachel verschwinden soll
      7. tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(10)
      8. 'Is zwar eigentlich nicht wichtig, aber immer schön zu wissen, dass das möglich ist
      9. 'Und jetzt führen wir den finalen Schlag aus. Der TileUpdateManager macht jedoch die Arbeit:
      10. TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification)
      11. End Sub

      Spoiler anzeigen

      VB.NET-Quellcode

      1. private void LiveKachelAendern_Tapped(object sender, TappedRoutedEventArgs e)
      2. {
      3. //Das wird mithilfe einer TileNotification geschehen
      4. //Die erstellen wir auch erstmal:
      5. TileNotification tileNotification = new TileNotification(tileXml);
      6. //Wie man sieht ist unsere XML-Datei als Parameter übergeben worden
      7. //Jetzt wird angegeben, dass der Inhalt nach 10 Sekunden wieder von der Kachel verschwinden soll
      8. tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(10);
      9. //Is zwar eigentlich nicht wichtig, aber immer schön zu wissen, dass das möglich ist
      10. //Und jetzt führen wir den finalen Schlag aus. Der TileUpdateManager macht jedoch die Arbeit:
      11. TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
      12. }


      4). Kachel löschen
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Private Sub LiveKachelLoeschen_Tapped(sender As Object, e As TappedRoutedEventArgs)
      2. 'Nun wird die ganze Arbeit wieder zunichtegemacht:
      3. Windows.UI.Notifications.TileUpdateManager.CreateTileUpdaterForApplication().Clear()
      4. End Sub

      Spoiler anzeigen

      VB.NET-Quellcode

      1. private void LiveKachelLoeschen_Tapped(object sender, TappedRoutedEventArgs e)
      2. {
      3. //Nun wird die ganze Arbeit wieder zunichtegemacht:
      4. Windows.UI.Notifications.TileUpdateManager.CreateTileUpdaterForApplication().Clear();
      5. }



      Zum Ändern drückt ihr nun als erstes auf den Button zum Erstellen des XML-Dokuments und dann auf "Livekachel Ändern". Dann guckt mal auf den Startbildschirm. Nach 10 Sekunden wird sich das Bild wieder löschen.

      Bei Fragen oder Anmerkungen hilft ein Post ;) Den Umfang des Tutorials kann ich leicht erweitern, da das meiste im Prinzip von der MSDN abgeschrieben wurde Klick
      Bilder
      • Square.png

        3,17 kB, 150×150, 1.854 mal angesehen

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Telcrome“ ()