2

目前,如果您想在 windows phone 应用程序中本地化说应用程序标题,您可以这样做:

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

这太长了,并且每次绑定都会重复某些部分。即使您要将LocalizedResources属性重命名为RLocalizedStringsLS,例如,仍然存在一些重复。

所以我尝试制作一个从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 回答