Wpf 最佳识别字符串ResourceDictionary的区域设置?
我有一个本地化字符串的资源字典。我想将它的一个属性(例如,它的Wpf 最佳识别字符串ResourceDictionary的区域设置?,wpf,localization,Wpf,Localization,我有一个本地化字符串的资源字典。我想将它的一个属性(例如,它的标记)设置为区域设置的名称,这样我就可以很容易地从代码隐藏中识别资源字典。(否则,我会进行一些肮脏的文件名解析,这在很多方面都会冒犯我。) 例如,我想这样做: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micros
标记
)设置为区域设置的名称,这样我就可以很容易地从代码隐藏中识别资源字典
。(否则,我会进行一些肮脏的文件名解析,这在很多方面都会冒犯我。)
例如,我想这样做:
<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文件,并加载该文件的资源字典。我不喜欢以这种方式受文件名的约束。我认为使用标记之类的东西的一个缺点是,我必须先加载字典,然后才能确定它的实际区域设置,因此文件名解析在这方面是成功的。理想的(对我来说)解决方案不依赖于文件名,也不需要加载资源字典。我有几种方法
- 如果您的资源字典是一个真正的资源,那么只需将文件名作为区域性即可。我不认为这里有问题,因为只有开发人员才能访问文件名
- 有一把假钥匙(可怕的方法)
de-de
这很糟糕,因为您必须实际打开每个字典,并确保第一个字符串是真实的区域性
- 如果您的资源字典是一个内容文件,那么请像它是一个资源一样执行操作,只要确保在最终用户删除文件时测试错误即可
Woh。不需要。为什么需要知道代码隐藏中的标记?字典是从代码隐藏中的自定义资源字典管理器加载的。我需要一种按区域设置选择/查找资源字典的简单方法,但我不知道如何实现这种关联。对。但是这些资源字典是资源还是内容?顺便说一下,WPF已经实现了一种本地化方法。检查@NestorArturo,是的,我知道,但我的应用程序不能使用LocBaml。资源字典是松散的XAML文件,可以在运行时在文本编辑器中修改。
<system:String x:Key="Culture">de-DE</system:String>