WPF多语言和多线程一起用会导致多语言不起作用,求解决办法!
本帖最后由 u011349913 于 2013-07-15 15:45:31 编辑
我在线程里,调用了BeginInvoke,来修改WPF窗体上一个控件的文字内容,本来一切正常,
然后,我又用 xaml 和 DynamicResource 标签,实现了运行时切换多语言,启动后,语言切换也看似一切正常,
但是,当线程改过控件文字后,多语言切换,对这个控件就不起作用了!其他控件还是正常的!
线程的代码里面,我也是按照多语言的方式,来修改控件上的文字,类似:
Dispatcher.Invoke((Action)delegate {
testButton.Content = Application.Current.FindResource("AlreadyStart").ToString(); });
多语言的实现,用的是wpf里最常见的方案。
我在网上找了一些多线程和多语言的example的工程文件来测试,全都有这个问题,搜索不到解决办法,求助!
测试用工程文件:
链接:http://pan.baidu.com/share/link?shareid=4270780001&uk=3459752242
密码:qlqt
(不设密码百度就要审核)
这是网上很出名的一个多语言的example,打开后,通过左上角菜单切换中英文,我在右边添加了一个按钮,点一次,就启动一个线程,修改左边的按钮的文字。一旦修改过,再切换多语言,对左边的按钮就不起作用了!但线程里还是能够改!
求助啊,快把人整死了
------解决方案--------------------
大体就是这个意思
在xaml里面写资源 实际上是一种绑定
而你只后台直接写的意思就是赋值
赋值你觉得你改变资源的值不需要重新再赋值一下么