只是想知道是否可以根据语言/文化动态创建XAML中的字符串列表?假设用户以英语用户身份登录,它显示客户名称,订单号...如果用户以波兰语用户身份登录,则会显示Nazwa klienta,Numerzamówienia?
我只知道如下所示的硬编码:
<System_Collections_Generic:List`1 x:Key="columnNameList">
<System:String>Client Name</System:String>
<System:String>Order Number</System:String>
<System:String>Date</System:String>
</System_Collections_Generic:List`1>
答案 0 :(得分:0)
我建议使用资源文件和标记扩展名。在资源文件中,您可以创建字符串资源,并为每种语言创建本地化资源文件。在标记扩展中,您只需从资源中返回字符串的值(它将自动从当前文化的卫星资源程序集中选择适当的语言)。
标记扩展程序
[MarkupExtensionReturnType(typeof(string))]
public class ResourceString : MarkupExtension
{
[ConstructorArgument("resourceKey")]
public string ResourceKey { get; set; }
public ResourceString(string resourceKey)
{
this.ResourceKey = resourceKey;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
// Assuming your resource file is named StringResources.resx
return StringResources.ResourceManager.GetString(ResourceKey);
}
}
<强> XAML 强>
<local:ListOfStrings x:Key="columnNameList">
<local:ResourceString ResourceKey="ClientName" />
<local:ResourceString ResourceKey="OrderNumber" />
<local:ResourceString ResourceKey="Date" />
</local:ListOfStrings>
顺便说一句,你不能在XAML中使用泛型(嗯,你可以在XAML 2009中,但它还没有在VS中支持)。因此,您需要创建一个表示字符串列表的非泛型类:
public class ListOfStrings : List<string> { }