我已经编写了一个标记扩展,用于使用资源翻译字符串。
[ContentProperty("Text")]
public class TranslateExtension : IMarkupExtension
{
private readonly ILocalizationService _localizationService;
public string Text { get; set; }
public TranslateExtension()
{
_localizationService = Mvx.Resolve<ILocalizationService>();
}
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Text == null)
return "";
return _localizationService.GetString(Text);
}
}
如果我在XAML Elements的属性中使用它,它可以正常工作,如:
<Label Text="{i18n:Translate DebugView}" VerticalOptions="Center" HorizontalOptions="Center" />
但现在我想在Picker.Items
中提供一个字符串列表。
<Picker SelectedIndex="0" HorizontalOptions="End" VerticalOptions="Center" Title="{i18n:Translate State}">
<Picker.Items>
<i18n:TranslateExtension Text="OnState"></i18n:TranslateExtension>
<i18n:TranslateExtension Text="OffState"></i18n:TranslateExtension>
</Picker.Items>
</Picker>
我没有让它发挥作用。仅当我在TranslateExtension
中使用一个 Picker.Items
元素时,才会正确显示。否则崩溃('TranslateExtension'无法转换为'System.String'类型)。我尝试了很多不同风格的编写元素,但我没有成功。写它的正确方法是什么?
答案 0 :(得分:0)
a
试试这个