如何通过WPF中的代码将字符串绑定到动态资源

时间:2015-08-07 07:16:01

标签: c# wpf xaml caliburn dynamicresource

我目前正在开发一个项目,我使用Caliburn在View和ViewModel之间进行绑定。为了能够在运行时在语言之间切换,我有单独的资源文件,其中包含应用程序中使用的所有字符串。一些例如TextBlock文本绑定绑定到其中一个字符串资源,如下所示:

SampleView.xaml <TextBlock Text={DynamicResource Foo.Bar.Baz} ... /&gt;

Language.en-US.xaml <system:String x:Key="Foo.Bar.Baz">Im a string</system:String>

当我将应用程序的文化更改为其他语言时,动态绑定到Foo.Bar.Baz会在运行时将字符串更新为新语言。太好了!

但是,应用程序中的某些Text属性绑定到ViewModel中的一个字符串,其中包含Caliburn,如下所示:

SampleView.xaml <TextBlock Text={Binding SampleText} ... /&gt;

SampleViewModel.cs public string SampleText { get; set; }

SampleText的值设置为来自Language.en-US.xaml的字符串资源,如下所示: ... SampleText = Application.Current.FindResource("Foo.Bar.Baz") as string; ...

不幸的是,当我更改应用程序文化时,字符串SampleText未更新。

因此问题是: 如何将SampleText设置为Language.en-US.xaml中的字符串资源,当我更改应用程序文化时,它将自动更新?

注意:通过对this StackOverflow question的评论,我读到可以通过类似的bindnig: SampleText = Application.Current.Resource["Foo.Bar.Baz"] as string; 但是,这对我不起作用。

0 个答案:

没有答案