現在、Windows Phone アプリでアプリケーション タイトルなどをローカライズする場合は、次のようにします。
<TextBlock Text="{Binding LocalizedResources.ApplicationTitle,
Source={StaticResource LocalizedStrings}}" />
これは長すぎるため、バインディングごとに特定の部分が繰り返されます。たとえば、LocalizedResources
プロパティを にR
、LocalizedStrings
クラスをに名前変更したとしても、いくつかの繰り返しが存在します。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=
して追加すると、それが修正されます。