我知道从.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/