For localization I’m using the Resource-file (.resx files) functionality in .NET, but I’m wondering if there’s a smart way to databind the various localization properties directly in XAML?
The resource file only seems to expose static properties, which I can’t figure out how to bind from a viewmodel, or other resource dictionary.
Also, if it’s possible, I’d like it to work at design-time with Expression Blend.
Here is how I do it.
WPF:
Create a resource file and in the same assembly create a class that has a public constructor. Make sure the resource file is marked public.
In your xaml file – add a reference to this location in the namespaces
xmlns:res="clr-namespace:MyProject.StringResources"For your text property use the following binding
TextProperty="{x:Static res:ResourceFileName.ResourceKey}"Silverlight:
Follow steps 1 & 2 above and then add the resource file as a Resource in either your user control or in an application level resource:
<res:ResourceFileName x:Key="resourcesLabels"/>For your text property use the following binding:
TextProperty="{Binding ResourceKey, Source={StaticResource resourceLabels}}"