如何在Silverlight中即时切换UI文化数据绑定

如何在Silverlight中即时切换UI文化数据绑定,第1张

概述我有一个TextBlock控件,它是绑定到DateTime属性的数据. 文本显示如下: 2010年10月21日,星期四 我需要动态切换UI Culture,使用以下内容: Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = 我有一个TextBlock控件,它是绑定到DateTime属性的数据.

文本显示如下:

2010年10月21日,星期四

我需要动态切换UI Culture,使用以下内容:

Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture                                     = new CultureInfo("de-de");

我试过这个强制绑定到recalc:

var bindingExpression = textBlock.GetBindingExpression(TextBlock.TextProperty);bindingExpression.UpdateSource();

但我仍然看到周四而不是Donnerstag ……

我该怎么办?有任何想法吗?

解决方法 我发现了一种更好的方法,它只需要更新根视觉.

public sealed class Localizer : INotifyPropertyChanged{  public Localizer()   {    Culture = Thread.CurrentThread.CurrentCulture;   }  XmlLanguage _language;  public XmlLanguage Language   {     get { return _language; }     private set { _language = value; RaiSEOnPropertyChanged("Language"); }   }  CultureInfo _culture;  public CultureInfo Culture   {     get { return _culture; }    set     {       Contract.Requires(value != null);        if (_culture == value) return;       _culture = value;       Thread.CurrentThread.CurrentCulture =      Thread.CurrentThread.CurrentUICulture = value;      Language = XmlLanguage.GetLanguage(value.name);      RaiSEOnPropertyChanged("Culture");    }  }  protected voID RaiSEOnPropertyChanged(string propname)   {    var e = OnPropertyChanged;    if (e != null) e(this,new PropertyChangedEventArgs(propname));  }  public event PropertyChangedEventHandler OnPropertyChanged;}

现在将此实例添加到应用程序资源:

<nt:Localizer x:Key="Localizer"/>

现在将它绑定到您的根视觉(f.e.Frame,UserControl或Page),如下所示:

<UserControl ... Language="{Binding Language,Source={StaticResource Localizer}}">
总结

以上是内存溢出为你收集整理的如何在Silverlight中即时切换UI文化数据绑定全部内容,希望文章能够帮你解决如何在Silverlight中即时切换UI文化数据绑定所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1078858.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存