如何在C#(WPF)中获取字符串资源?

如何在C#(WPF)中获取字符串资源?,c#,wpf,localization,localizable.strings,C#,Wpf,Localization,Localizable.strings,我知道如何从XAML中的字符串资源获取资源: {Binding OK, Source={StaticResource LocStrings}} 但是,我想直接在C#中使用本地化字符串,例如 someString = Resources["LocStrings"]["StringId"]; 但这并不能编译。这不是一个完整的答案,但可能对您的国际化应用程序有所帮助,请看,这可能会对您有用。您需要这样的东西: var myText = this.FindResource("LocStrings")

我知道如何从XAML中的字符串资源获取资源:

{Binding OK, Source={StaticResource LocStrings}}
但是,我想直接在C#中使用本地化字符串,例如

someString = Resources["LocStrings"]["StringId"];

但这并不能编译。

这不是一个完整的答案,但可能对您的国际化应用程序有所帮助,请看,这可能会对您有用。

您需要这样的东西:

var myText = this.FindResource("LocStrings") as string;
我想,您可以将
更改为资源所在的任何位置

更新:

通常,这是我用于全球资源的:

var myText = Application.Current.FindResource("resourceName") as string;

资源字符串可以作为自动生成的
资源
类中的静态成员访问,该类位于
.Properties.Resources
中<代码>属性
资源
都是不幸的命名空间名称,它们与编写WPF代码时可能已经在范围内的属性或命名空间冲突。因此,您可能必须使用完全限定名。e、 g

MyProject.Properties.Resources.AppName
对于在
Resources.resx
中定义的名为“AppName”的字符串

您应该更喜欢这种获取字符串资源的方法,而不是调用
FindResource
,因为它提供了资源字符串名称的编译时检查


自由流。大家,这怎么可能还没有给出答案呢?

(很抱歉,我已经知道答案了……我刚刚看到了后面的资源代码):顺便说一句,答案很简单:using.Resources;someString=Strings.StringId;是否没有更好的(类型安全)方法?使用WinForms应用程序获取字符串资源要好得多:Properties.Resources.ResourceName;据我所知没有。但是您可以自己检查类型。也可以在WPF应用程序中使用.resx文件来获得这些好处,但我想知道XAML没有提供这些好处…AppNamespace.Properties.Resources。。一个基本的WPF东西@RobinDavies我不使用带有WPF的RESX文件,只使用资源字典。现在我不确定你的建议是否有效(我上次检查这类东西已经有几年了),但问题的形成方式给我的印象是,作者想根据
string
类型的键获得翻译。