WidgetManager.UpdateWidget(WidgetUpdateRequestOptions) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为小组件主机提供小组件更新的内容。
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 将导致更新被忽略。