如何在xaml中使用硬编码值的转换器

时间:2014-09-18 10:43:28

标签: c# .net wpf xaml windows-phone-8

我有一个Windows Phone应用程序,我希望本地化。因为我在运行时从服务器下载翻译,所以我不能使用AppResources。我想要做的是创建一个转换器,将转换值中的字符串更改为字符串。 类似的东西:

    Text="{"STRING_OK", Converter={StaticResource TranslationConverter}}"

当然,这段代码不能编译,但有没有解决方法呢?我怎样才能将转换器用于硬编码值?

2 个答案:

答案 0 :(得分:5)

另一种比创建MarkupExtension更简单的解决方法是将硬编码值设置为转换器参数。无论如何,正如@KingKing已经指出的那样,我们仍然需要绑定才能使用Converter。我们可以让转换器忽略通过绑定传递的值,只考虑转换逻辑中的ConverterParameter

Text="{Binding Converter={StaticResource TranslationConverter}, 
               ConverterParameter=STRING_OK}"

答案 1 :(得分:1)

您无法为各种语言创建固定数量的AppResource,因为您的情况是动态翻译过程,但您仍然可以为您的硬编码字符串值创建一个Appresource文件,然后您可以使用我们自己的转换器。 / p>

Text =“{Binding Path = LocalizedResources.TextLabelLocale,Source = {StaticResource LocalizedStrings},Converter = {StaticResource TranslationConverter}}”

public class LocalizedStrings     {         public LocalizedStrings()         {         }

    private static sdkGlobalizationCS.AppResources localizedResources = new sdkGlobalizationCS.AppResources();

    public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }
}