我想做出标记扩展以简化投标。 我有字典,我将该属性绑定到视图中的标签。 我有ValueConverter负责这种词典]和我通过ConverterParameter这是一个字符串,它发现Xamarin.Forms用于绑定的MarkupExtension
<Label Text="{Binding Tanslations,Converter={StaticResource TranslationWithKeyConverter}, ConverterParameter='Test'}"/>
,但我必须做同样的事情,不同的标签,但关键(ConverterParameter)会有所不同,其余的将保持同样
我想的MarkupExtension,让我写这篇文章:
<Label Text="{local:MyMarkup Key=Test}"/>
此标记应生成绑定到一个名为“Tanslations”与TranslationWithKeyConv的valueconverter财产erter和ConverterParameter的值为Key。
我试图做到这一点,但它不工作:
public class WordByKey : IMarkupExtension
{
public string Key { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
return new Binding("Tanslations", BindingMode.OneWay, converter: new TranslationWithKeyConverter(), converterParameter: Key);
}
}
没有显示在标签上。
文本是一个字符串,那么标记扩展需要提供来自ProvideValue的字符串,与Binding标记扩展相同。它不会有一个标记扩展返回另一个。 – JimBobBennett
Xamarin.Forms已经有了一个推荐的方法来做到这一点。请参阅https://developer.xamarin.com/guides/xamarin-forms/advanced/localization/ – matthewrdev