我有一个本地化字符串的资源字典。我想在其上设置一个属性(例如,它的Tag
)到区域设置的名称,以便我可以轻松地从代码隐藏中识别ResourceDictionary
。 (否则,我会做一些脏文件名解析,这会以各种方式冒犯我。)
例如,我想做这样的事情:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
Tag="de-DE">
<system:String x:Key="Hello">Hallo Welt!</system:String>
</ResourceDictionary>
但由于XamlParseException
不存在,因此导致ResourceDictionary.Tag
。还有另一种方法可以在这里设置标签吗?或者有更好的方法来实现我的目标吗?感谢。
修改
为了澄清,我有一个包含多个ResourceDictionary
XAML文件的目录,每个文件都包含特定区域设置的本地化字符串。例如,当用户将语言环境设置为德语时,我的应用程序会在上述目录中查找以"de-DE.xaml"
结尾的XAML文件,并加载该文件的资源字典。我不希望以这种方式受到文件名的约束。我认为使用类似Tag
之类的东西的缺点是我必须在确定其实际区域设置之前加载字典,因此文件名解析在该方面获胜。理想(对我而言)解决方案不依赖于文件名,也不需要加载资源字典。
答案 0 :(得分:0)
我有几个方法
如果您的资源字典是REAL资源,那么只需将文件名作为文化。我没有在这里看到问题,因为只有开发人员才能访问文件名。
有一个虚拟钥匙(可怕的方法)
<system:String x:Key="Culture">de-DE</system:String>
这很糟糕,因为你必须在物理上打开每个字典,并确保第一个字符串是真正的文化。
如果您的资源字典是一个内容文件,那么就像它是一个资源一样,只要确保在最终用户删除文件时出现错误。