我知道如何从 XAML 中的字符串资源中获取资源:
{Binding OK, Source={StaticResource LocStrings}}
但是,我想直接在 C# 中使用本地化字符串,例如
someString = Resources["LocStrings"]["StringId"];
但这不会编译。
我知道如何从 XAML 中的字符串资源中获取资源:
{Binding OK, Source={StaticResource LocStrings}}
但是,我想直接在 C# 中使用本地化字符串,例如
someString = Resources["LocStrings"]["StringId"];
但这不会编译。
你需要这样的东西:
var myText = this.FindResource("LocStrings") as string;
我想,您可以更改this
到您的资源所在的任何位置。
更新:
通常,这是我用于全局资源的:
var myText = Application.Current.FindResource("resourceName") as string;
资源字符串可作为自动生成Resources
类中的静态成员访问,位于<Default.app.namespace>.Properties.Resources
. Properties
并且Resources
都是不幸的命名空间名称,它们与您在编写 WPF 代码时可能已经在范围内的属性或命名空间发生冲突。因此,您可能必须使用完全限定名称。例如
MyProject.Properties.Resources.AppName
Resources.resx
对于名称为“AppName”的字符串。
您应该更喜欢这种获取字符串资源的方法而不是调用FindResource
,因为它提供了资源字符串名称的编译时检查。
FFS。人,这怎么可能没有作为答案呢?
这不是一个完整的答案,但可能对您的国际化应用程序有所帮助,请参阅此codeplex 文章可能对您有用。