1

I want to create a simple app on the Microsoft Band which updates a TextBlock when I click a Button.

I know how to get the trigger event of a button on the band. But I am unable to set a TextBlock if a button is triggered.

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

I tried it with changing the page and call the SetPAgeAsync, but this does not work correctly.

Your help is appreciated.

4

2 回答 2

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
    }
}
于 2015-05-04T16:01:54.750 回答
0

我试图做同样的事情,最后阅读了他们的SDK 文档的每一行,并在第 31 页发现了坏消息。

请注意,即使您的应用为该页面设置了新内容,磁贴当前显示页面的内容也不会在 Band 屏幕上重绘。如果页面滚动离开 Band 屏幕然后重新打开,或者如果用户退出并重新打开磁贴,则使用新内容重新绘制页面。

我将尝试添加和删除页面,以使我的新内容成为新页面,看看是否可行。无论如何都不是解决方案,但我需要尝试一些东西。这真的让我很沮丧,因为我们无法更新我们的内容并重新绘制它。

于 2015-05-04T16:02:03.400 回答