2016-04-01 2 views
2

Ich entwickle Microsoft Band 2 App mit UWP, in dem ich versuche, auf die vorhandene Kachel von der App zugreifen, um den Tile PageLayout Hintergrund zu aktualisieren. Ich habe den Code unten geschrieben für Fliesen ErstellenAktualisieren eines vorhandenen Microsoft Band Tile von UWP Telefon App

IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync(); 
     if (pairedBands.Count() > 0) 
     { 
      try 
      { 
       using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0])) 
       { 
        // do work after successful connect 
        // get the current set of tiles 
        IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync(); 
        if (tiles.Count() == 0) 
        { 
         int tileCapacity = await bandClient.TileManager.GetRemainingTileCapacityAsync(); 
         if (tileCapacity > 0) 
         { 
          // create a new Guid for the tile 
          Guid tileGuid = Guid.NewGuid(); 
          // create a new tile with a new Guid 
          BandTile tile = new BandTile(tileGuid) 
          { 
           // enable badging (the count of unread messages)  
           // IsBadgingEnabled = true, 
           // set the name  
           Name = "Torch Tile", 
           TileIcon = await LoadIcon("ms-appx:///Assets/Electric Bulb.png"), 
           SmallIcon = await LoadIcon("ms-appx:///Assets/Torchsmaltile.png") 
          }; 

          var panel = new FilledPanel 
          { 
           //ElementId = 0, 
           Rect = new PageRect(0, 0, 260, 128), 
           BackgroundColor = bandcolor 

          }; 


          var layout = new PageLayout(panel); 

          tile.PageLayouts.Add(layout); 


          try 
          { 
           // add the tile to the Band  
           if (await bandClient.TileManager.AddTileAsync(tile)) 
           { 
            List<PageData> pageDataArray = new List<PageData>(); 
            pageDataArray.Add(new PageData(pageguid, 0, new FilledButtonData(0, Colors.Transparent.ToBandColor()))); 

            await bandClient.TileManager.SetPagesAsync(
            tileGuid, pageDataArray); 

           } 
          } 
          catch (BandException ex) 
          { 
           // handle a Band connection exception } 
          } 
         } 
        } 
       } 

      } 

      catch (BandException e) 
      { 
       // handle BandException 

      } 
     } 

Im Folgenden ist der Code, den ich Tile zu aktualisieren Ich versuche aber nicht funktioniert.

IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync(); 
      if (pairedBands.Count() > 0) 
      { 
       try 
       { 
        using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0])) 
        { 

         // do work after successful connect 
         // get the current set of tiles 
         IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync(); 
         if (tiles.Count() > 0) 
         { 
          foreach (var tile in tiles) 
          { 

           foreach (var pageLayout in tile.PageLayouts) 
           { 
            var panel = pageLayout.Root as FilledPanel; 
            panel.BackgroundColor = Colors.Green.ToBandColor(); 
            pageLayout.Root = panel; 

           } 

          } 
         } 
        } 
       } 
       catch (Exception ex) 
       { 

       } 
      } 

Nach pageLayout.Root = Panel; Code Ich kann nicht finden, wie die Änderungen zurück an Band Tile gesendet werden.

Kann mir jemand helfen, die Tile PageLayout Hintergrundfarbe zu aktualisieren.

Antwort

3

Seitenlayouts selbst sind statisch; Sobald ein Tile hinzugefügt wurde, können sie nicht mehr geändert werden (außerhalb des Entfernens und dann wieder Hinzufügen des Tile). Die Idee ist, dass Sie stattdessen den Inhalt (z. B. Text) einer Instanz einer Seite (mit einem gegebenen Layout) aktualisieren. Abschnitt 8.7 der Band SDK Documentation beschreibt den Inhalt, der innerhalb einer bestimmten Seiteninstanz aktualisiert werden kann.

Für Ihr Szenario muss die Anwendung dem Benutzer erlauben, maximal 5 Farben auszuwählen, die innerhalb Ihrer Kachel zu einer bestimmten Zeit verwendet werden können. Definieren Sie dann 5 Seitenlayouts, die jeweils eine dieser Farben verwenden. (Ein Tile kann maximal 5 Seitenlayouts enthalten.) Anschließend können Sie 5 Seiteninstanzen erstellen, eine für jedes definierte Layout, um eine Kachel mit einer Seite für jede Farbe zu erstellen. Wenn der Benutzer die Farbmischung ändern möchte, muss die Anwendung die Kachel entfernen und dann erneut mit einem neuen Satz von Seitenlayouts hinzufügen.

+0

danke für den Vorschlag Phil. – narendramacha