如何在xaml中对硬编码值使用转换器
本文关键字:编码值 转换器 xaml | 更新日期: 2023-09-27 18:22:23
我有一个想要本地化的Windows Phone应用程序。因为我在运行时从服务器下载翻译,所以我不能使用AppResources。我想做的是创建一个转换器,将键更改为转换值中的字符串。类似于:
Text="{"STRING_OK", Converter={StaticResource TranslationConverter}}"
当然,这段代码不会编译,但有解决方法吗?如何将转换器用于硬编码值?
另一种比创建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; } }
}