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

UWP XAML UI本地化如何避免resw文件重复录入同一字符串资源

UWP资源复用解决方案

你可以通过自定义XAML标记扩展的方式实现单个资源条目适配所有场景,无需在.resw文件中重复录入多份相同内容,具体操作如下:

步骤1:实现自定义资源标记扩展

在你的项目中新增如下ResourceExtension类,直接复用你现有的ResourceHandler逻辑拉取无后缀的资源条目:

using Windows.UI.Xaml.Markup;

namespace 你的项目命名空间
{
    [MarkupExtensionReturnType(ReturnType = typeof(string))]
    public class ResourceExtension : MarkupExtension
    {
        /// <summary>
        /// resw文件中对应的资源键名
        /// </summary>
        public string Key { get; set; }

        protected override object ProvideValue(IServiceProvider serviceProvider)
        {
            // 直接复用你现有代码中的资源获取逻辑
            return ResourceHandler.Get(Key);
        }
    }
}

如果你需要兼容Windows 10 1607以下版本,也可以用IValueConverter实现相同效果:将资源键作为转换器参数传入,转换器内部调用ResourceHandler.Get返回资源值即可。

步骤2:XAML中引入命名空间并调用

在需要使用资源的XAML文件头部引入扩展类所在的命名空间:

xmlns:local="using:你的项目命名空间"

之后就可以直接给不同控件的对应属性赋值,不需要再用x:Uid,也不需要在resw中新增带属性后缀的资源:

  • TextBlock赋值示例:
<TextBlock Text="{local:Resource Key=info_278}" Margin="10,0,0,0" />
  • Button赋值示例:
<Button Content="{local:Resource Key=info_278}" Margin="10,0,0,0" />

原有逻辑兼容

代码中的调用方式完全不需要修改,还是保持原来的写法即可:

var displayErrorOnPopup = ResourceHandler.Get("info_278");

整个方案只需要维护.resw文件中一份info_278资源条目,即可覆盖所有使用场景,后续新增其他资源也不需要重复录入多份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:15:05