2

現在、Windows Phone アプリでアプリケーション タイトルなどをローカライズする場合は、次のようにします。

<TextBlock Text="{Binding LocalizedResources.ApplicationTitle, 
                  Source={StaticResource LocalizedStrings}}" />

これは長すぎるため、バインディングごとに特定の部分が繰り返されます。たとえば、LocalizedResourcesプロパティを にRLocalizedStringsクラスをに名前変更したとしても、いくつかの繰り返しが存在します。LS

そこで、クラスを継承しBindingて以下のように実装するクラスを作ってみました。

public class LocalizedBinding : Binding {
    public LocalizedBinding(string path) : base(path) {
        Source = Application.Current.Resources["LocalizedStrings"];
    }
}

希望は、次のように使用することでした。

<TextBlock Text="{b:LocalizedBinding LocalizedResources.ApplicationTitle}" />

ただし、アプリは起動するとすぐにクラッシュし、デバッガーでもエラーは表示されません。これがどのように機能するかについてのヒントはありますか?

ありがとう

編集:

パラメーターなしのコンストラクターをバインディングLocalizedBindingに追加Path=して追加すると、それが修正されます。

4

2 に答える 2

1

LocalizedBindingこれは、パラメーターなしのコンストラクターをクラスに追加することで修正されます

public class LocalizedBinding : Binding {
    public LocalizedBinding() {
        Source = Application.Current.Resources["LocalizedStrings"];
    }

    public LocalizedBinding(string path) : base(path) {
        Source = Application.Current.Resources["LocalizedStrings"];
    }
}
于 2013-04-05T17:34:55.627 に答える
0

ローカリゼーション クラスを App.xaml に入れてみて、Application_Launching でユーザーが設定した言語を確認してください。テキストを表示するすべての場所で、App.xaml クラスを参照します。

于 2013-04-11T13:05:36.560 に答える