1

ボタンをクリックすると TextBlock を更新する単純なアプリを Microsoft Band で作成したいと考えています。

バンドのボタンのトリガー イベントを取得する方法を知っています。しかし、ボタンがトリガーされた場合、TextBlock を設定できません。

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

ページを変更してSetPAgeAsyncを呼び出してみたのですが、うまくいきません。

あなたの助けに感謝します。

4

2 に答える 2

1

OBS-私はこのコードを実行していません:)

await が欠落しているようです。また、いくつかの理由でイベント ハンドラーを持ち上げることをお勧めします。GC がそれをチャッキングするのを避け、後でサブスクライブを解除して潜在的なメモリ リークを回避し、非同期呼び出しをラップできるようにすることをお勧めします。コードを乱雑にすることなく、try catch で。イベント ハンドラが void を返すため、例外は伝播されないため、イベント ハンドラを移動して非同期呼び出しをラップします。

非同期呼び出しは、ところで使用できるブール値を返します

// 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
    }
}
于 2015-05-04T16:01:54.750 に答える
0

私は同じことをしようとしていましたが、最終的にSDK ドキュメントのすべての行を読み、31 ページに悪いニュースを見つけました。

タイルの現在表示されているページのコンテンツは、アプリがそのページに新しいコンテンツを設定しても、バンド画面に再描画されないことに注意してください。バンド画面からスクロールして戻った場合、またはユーザーがタイルを終了して再度開いた場合、ページは新しいコンテンツで再描画されます。

新しいコンテンツが新しいページになるように、ページの追加と削除を試して、それが機能するかどうかを確認します。決して解決策ではありませんが、何かを試す必要があります。これは、コンテンツを更新して再描画できないことに本当にイライラしています。

于 2015-05-04T16:02:03.400 に答える