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

本文关键字:编码值 转换器 xaml | 更新日期: 2023-09-27 18:22:23

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

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

当然,这段代码不会编译,但有解决方法吗?如何将转换器用于硬编码值?

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

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

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

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

Text="{Binding Path=LocalizedResources.TextLabelLocale,Source={StaticResource LocalizedString},Converter={taticResource TranslationConverter}"

公共类LocalizedString{公共本地化字符串(){}

    private static sdkGlobalizationCS.AppResources localizedResources = new sdkGlobalizationCS.AppResources();
    public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }
}