2016-04-01 89 views
2

我正在開發使用UWP的Microsoft Band 2應用程序,因爲我試圖從應用程序訪問現有的Tile以更新Tile PageLayout背景。 我已經寫了下面的代碼創建瓷磚從UWP手機應用程序更新現有的Microsoft Band Tile

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 

      } 
     } 

以下是我試圖更新塊,但不工作的代碼。

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) 
       { 

       } 
      } 

after pageLayout.Root = panel;代碼我無法找到如何將更改發送回Band Tile。

任何人都可以幫助我如何更新Tile PageLayout背景顏色。

回答

3

頁面佈局本身是靜態的;一旦添加了一個Tile,它們就不能被改變(除去並重新添加Tile)。這個想法是,你更新頁面實例的內容(例如文本)(使用給定的佈局)。 Band SDK Documentation的第8.7節描述了可在給定頁面實例內更新的內容。

對於您的場景,應用程序需要允許用戶在任何給定時間的瓷磚中選擇最多5種顏色,然後定義5個頁面佈局,每個佈局使用其中一種顏色。 (一個Tile最多可以有5個頁面佈局。)然後,您可以創建5個頁面實例,每個定義的佈局一個實例,以創建一個具有每種顏色的頁面的Tile。如果用戶想要改變顏色混合,那麼應用程序將需要刪除,然後用一組新的頁面佈局重新添加Tile。

+0

感謝您的建議菲爾。 – narendramacha