2011-08-04 21 views
3

この例では、多言語アプリを作成しました:How to: Build a Localized Application for Windows Phone実行時にWindows Phone APP言語を変更するにはどうすればよいですか?

私は正常にこのようにテキストにリソースデータをバインド:

<TextBlock x:Name="ApplicationTitle" Text="{Binding Path=MultiLangResources.Mainpage_Welcome, Source={StaticResource MultiLang}}"/> 

そして私はThread.CurrentThread.CurrentUICultureを変更しようとしたと私はできたコードで出力正しいキー:

ApplicationTitle.Text = LangResource.Mainpage_Welcome; 

しかし、バインドテキスト決して更新しないでください。

通常のバインドのようにバインドされたテキストを更新するにはどうすればよいですか?

誰でもこの問題を手伝ってもらえますか? 私は運が無ければこれも試しました。

public class MultiLang : INotifyPropertyChanged 
{ 
    public MultiLang() 
    { 
    } 

    private static MLTest.LangResource multiLangResources = new GigapodV2.LangResource(); 

    public MLTest.LangResource MultiLangResources 
    { 
     get { return multiLangResources; } 
     set 
     { 
      if (value != multiLangResources) 
      { 
       multiLangResources = value; 
       NotifyPropertyChanged("MultiLangResources"); 
      } 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyPropertyChanged(string property) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(property)); 
     } 
    } 
} 

答えて

3

LangResourceクラスは、それ自体で観察されず、したがってそこから任意の結合特性が観察されません。また、あなたはそれをオンザフライで変更するだけで、電話はCurrentCultureに関連するすべてのプロパティに通知しません。

それ以外の場合は、アプリの再起動が必要になります。しかし、OS自体が言語交換を許可しているので、が本当ににするのが正当な理由であることを意味するので、これに注意するようアドバイスします。

解決策は、CurrentCultureを変更すると、更新されたすべてのプロパティを通知するラッパークラスを作成することです。 SimonのNotifyPropertyWeaverの[DependsOn]属性を使用すると、これは非常に簡単になる可能性があります。

4

簡単に行うことができます。

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ca-ES"); 
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ca-ES"); 

(あなたは言語が選択置く場合、例えばメインページ)を主な問題があることすでにロードされているすべてのページ上のテキストで、必要があります。 「手動でリフレッシュ」する必要があります。

しかし、これは簡単にプログラム的に行うことができます。

this.btnChangeLanguage.Content = AppResources.Txt_Aceptar; 
関連する問題