Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a string resource in C# (WPF)?

I know how to get a resource from the string resource in XAML:

{Binding OK, Source={StaticResource LocStrings}}

However, I want to use a localized string in C# directly, e.g. something like

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

But this does not compile.

like image 535
Michel Keijzers Avatar asked Oct 24 '25 20:10

Michel Keijzers


2 Answers

You need something like this:

var myText = this.FindResource("LocStrings") as string;

I guess, you can change this to wherever your resource is located.

UPDATE:

Usually, this is what I use for global resources:

var myText = Application.Current.FindResource("resourceName") as string;
like image 154
NoOne Avatar answered Oct 27 '25 09:10

NoOne


Resource strings are accessible as static members in the auto-generated Resources class, found in <Default.app.namespace>.Properties.Resources. Properties and Resources are both unfortunate namespace names that clash with properties or namespaces that you probably already have in scope when writing WPF code. So you may have to use the fully-qualified name. e.g.

MyProject.Properties.Resources.AppName

for the string defined in Resources.resx with the name "AppName".

You should prefer this method of getting string resources over calling FindResource, as it provides compile-time checking of resource string names.

FFS. How can this not already be given as an answer, people?

like image 24
Robin Davies Avatar answered Oct 27 '25 09:10

Robin Davies