You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在代码中访问.resw资源文件的子属性(如Greeting.Text)?

访问.resw中带属性后缀的资源项

在UWP的.resw资源文件中,像Greeting.Text这类带后缀的项,是专门用于通过x:Uid自动绑定控件属性的,直接用ResourceLoader.GetString()访问会触发异常。要在代码中直接访问这类资源,不需要复制资源,可以通过ResourceMap来实现:

实现代码

#include <winrt/Windows.ApplicationModel.Resources.Core.h>

using namespace winrt::Windows::ApplicationModel::Resources::Core;

// 获取资源上下文与资源映射
auto resourceContext = ResourceContext::GetForCurrentView();
auto resourceMap = ResourceManager::Current().MainResourceMap().GetSubtree(L"Resources");

// 访问Greeting.Text对应的资源
auto resourceCandidate = resourceMap.Lookup(L"Greeting/Text", resourceContext);
if (resourceCandidate.Value() != nullptr)
{
    const auto myString = resourceCandidate.Value().AsString();
    // 在这里使用获取到的字符串
}

原理说明

  • 资源系统内部会将Greeting.Text解析为Greeting节点下的Text子项,因此需要用斜杠/替代点.来拼接访问路径。
  • 通过ResourceManager获取主资源映射,定位到对应.resw文件的Resources子树后,用Lookup方法传入正确路径和上下文,即可安全获取资源值。

内容的提问来源于stack exchange,提问作者citelao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:52:13