更方便的Windows手机应用程序本地化方式

时间:2013-04-05 16:38:31

标签: windows-phone-7 localization windows-phone-8 windows-phone

目前,如果你想本地化在Windows手机应用程序中说应用程序标题,你会这样做:

<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=附加到绑定修复它。

2 个答案:

答案 0 :(得分:1)

通过向LocalizedBinding

添加无参数构造函数来解决此问题
public class LocalizedBinding : Binding {
    public LocalizedBinding() {
        Source = Application.Current.Resources["LocalizedStrings"];
    }

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

答案 1 :(得分:0)

您可以尝试将Localization类放入App.xaml,然后在Application_Launching上检查用户设置的语言。无论您在哪里显示文本,都可以参考App.xaml类。