2015-05-03 82 views
1

我想在Microsoft Band上創建一個簡單的應用程序,該應用程序在單擊按鈕時更新TextBlock。使用新的Microsoft Band SDK更新TextBlockData

我知道如何獲得樂隊上的按鈕的觸發事件。但是如果觸發按鈕,我無法設置TextBlock。

bandClient.TileManager.TileButtonPressed += (s, args) => 
{ 
    buttonPressedCount++; 
    ((TextBlockData)page3.Values[2]).Text = buttonPressedCount.ToString(); 
    bandClient.TileManager.SetPagesAsync(args.TileEvent.TileId, page, page2,page3); 
}; 

我試着改變頁面並調用SetPAgeAsync,但是這不能正常工作。

您的幫助表示讚賞。

+0

你好。我有問題捕獲按鈕觸發的事件。你似乎有它的工作。你介意檢查我的問題:http://stackoverflow.com/questions/35147802/ms-band-sdk-button-pressed-event-handler-not-being-called – doktorg

回答

1

OBS-我還沒有運行該代碼:)

你似乎缺少一個在等待着,我也建議你解除了事件處理出來的幾個原因,避免GC夾緊它扔掉,可以稍後取消訂閱,以避免潛在的內存泄漏,並且能夠將異步調用封裝在try catch中而不必混亂代碼。由於事件處理程序返回void,所以異常不會被傳播,請移出事件處理程序幷包裝異步調用。

異步調用返回一個布爾值,你可以使用BTW

// bandClient.TileManager.TileButtonPressed += OnTileButtonPressed; 


private async void OnTileButtonPressed(object s, BandTileEventArgs<IBandTileButtonPressedEvent> e) 
{ 
    try 
    { 
     buttonPressedCount++; 
     ((TextBlockData)page3.Values[2]).Text = buttonPressedCount.ToString(); 
     await bandClient.TileManager.SetPagesAsync(e.TileEvent.TileId, page, page2, page3); 
    } 
    catch (BandException ex) 
    { 
     // Notify 
    } 
} 
0

我試圖做同樣的事情,終於看完了SDK documentation的每一行,發現頁面上的壞消息31

請注意,即使您的應用程序爲該頁面設置了新內容,也不會在波段屏幕上重新繪製當前顯示的圖塊頁面的內容。如果該頁面滾動出現Band屏幕並重新打開,或者用戶退出並重新打開該圖塊,該頁面將重新繪製新內容。

我打算玩添加和刪除頁面,以便我的新內容成爲一個新頁面,看看是否會工作。不是以任何方式解決問題,但我需要嘗試一些。這讓我非常沮喪,我們無法更新我們的內容並重新繪製。