WidgetManager.UpdateWidget(WidgetUpdateRequestOptions) 方法

定义

为小组件主机提供小组件更新的内容。

public:
 virtual void UpdateWidget(WidgetUpdateRequestOptions ^ widgetUpdateRequestOptions) = UpdateWidget;
void UpdateWidget(WidgetUpdateRequestOptions const& widgetUpdateRequestOptions);
public void UpdateWidget(WidgetUpdateRequestOptions widgetUpdateRequestOptions);
function updateWidget(widgetUpdateRequestOptions)
Public Sub UpdateWidget (widgetUpdateRequestOptions As WidgetUpdateRequestOptions)

参数

widgetUpdateRequestOptions
WidgetUpdateRequestOptions

WidgetUpdateRequestOptions 对象,其中包含要更新小组件的内容。

实现

示例

下面的代码示例演示了 UpdateWidget的典型用法。 调用 Microsoft.Windows.Widgets.Providers.WidgetManager.GetWidgetInfos 以获取与小组件提供程序关联的活动小组件 WidgetInfo 对象列表。 对于每个小组件,都会生成一个视觉模板和数据模板,并将其传递给 WidgetUpdateRequestOptions 对象中的 UpdateWidget 调用。

using namespace winrt;
using namespace Microsoft::Windows::Widgets;
using namespace Microsoft::Windows::Widgets::Providers;

class WidgetManagerOperations
{
    void InitializeWidgets(hstring myWidgetId)
    {
        WidgetManager widgetManager = WidgetManager::GetDefault();
        com_array<WidgetInfo> widgetInfos = widgetManager.GetWidgetInfos();

        for (const auto& widgetInfo : widgetInfos)
        {
            if (widgetInfo.WidgetContext().IsActive())
            {
                WidgetUpdateRequestOptions options{myWidgetId};
                options.Template(LR"({
                    "type": "AdaptiveCard",
                    "version": "1.5",
                    "body": [
                        {
                            "type": "TextBlock",
                            "text": "${greeting}"
                        }
                    ]
                })");

                options.Data(LR"({
                    "greeting": "Hello"
                })");

                widgetManager.UpdateWidget(options);
            }
        }
    }
}

注解

不会更新 WidgetUpdateRequestOptions 类中未设置的任何变量。 例如,如果只对更新小组件的数据感兴趣,但想要保留现有视觉模板和自定义状态,则仅设置 Microsoft.Windows.Widgets.Providers.WidgetUpdateRequestOptions.Data 属性,则会更新小组件的数据,但模板和自定义状态不会修改。

UpdateWidget 还可以通过设置要清除的值的空字符串来清除任何存储的值。 例如,如果要清除小组件的存储自定义状态,可以将 Microsoft.Windows.Widgets.Providers.WidgetUpdateRequestOptions.CustomState 属性设置为空字符串,这将在调用 UpdateWidget 后清除存储的自定义状态。

调用此函数以更新已删除的小组件、未与应用关联的小组件,或使用不存在的小组件 ID 将导致更新被忽略。

适用于