我知道从.resw文件引用本地化字符串的通常方法是这样的:

XAML:

<Button x:Uid="ButtonUid" />


Resources.resw:

ButtonUid.Content = "Hello World"


但是也可以这样做:

XAML(伪代码):

<Button Content = "$buttonLabel" />


Resources.resw:

buttonLabel = "Hello World"


我之所以想像第二个例子那样,是因为这是我正在从iOS和Android移植到WP的应用程序。我想将iOS或Android字符串文件转换为.resw语法,但无需遍历每个字符串并添加.Content或.Text或用于其的任何内容。有一个简单的解决方案吗?

最佳答案

您可以使用CustomXamlResourceLoader

public class XamlResourceLoader : CustomXamlResourceLoader
{
    private readonly ResourceLoader _loader;

    public XamlResourceLoader()
    {
        _loader = ResourceLoader.GetForViewIndependentUse();
    }

    protected override object GetResource(string resourceId, string objectType, string propertyName, string propertyType)
    {
        return _loader.GetString(resourceId) ?? resourceId;
    }
}


然后在您的App.xaml.cs构造函数中:
CustomXamlResourceLoader.Current = new XamlResourceLoader();

最后在您的xaml中:
<Button Content = "{CustomResource buttonLabel}" />

关于c# - 直接在XAML中使用.resw文件中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40767143/

10-12 06:52