使用新的Microsoft Band SDK更新TextBlockData



我想在Microsoft频段上创建一个简单的应用

我知道如何在乐队上获取按钮的触发事件。但是,如果触发了一个按钮,我将无法设置文本块。

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

我尝试了更改页面并调用setPageasync,但这无法正常工作。

您的帮助非常感谢。

obs-我没有运行此代码:)

您似乎缺少等待的等待,我还建议您出于几个原因将活动处理程序提出,避免将其扔掉,以避免以后取消订阅以避免潜在的内存泄漏并能够包装异步在尝试捕获中呼叫,而无需弄乱代码。由于事件处理程序返回空隙,因此不会传播异常,请将活动处理程序移出并包装异步调用。

异步调用返回布尔值,您可以使用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
    }
}

我试图做同样的事情,终于阅读了他们的SDK文档的每一行,并在第31页上找到了坏消息。

请注意,即使您的 应用将新内容设置为该页面。如果新内容从频段屏幕上滚动,则该页面被重新绘制。 然后返回,或者如果用户退出并重新打开瓷砖。

我将在添加和删除页面上玩耍,以使我的新内容成为一个新页面,看看它是否有效。无论如何都不是解决方案,但我需要尝试一些东西。这确实使我感到沮丧,因为我们无法更新我们的内容并重新绘制它。

最新更新