【发布时间】:2017-06-18 17:08:57
【问题描述】:
我想制作附加标记以简化出价。 我有字典,我将该属性绑定到视图中的标签。 我有 ValueConverter 接受这个字典,我通过 ConverterParameter 这是一个字符串,它找到了
<Label Text="{Binding Tanslations,Converter={StaticResource TranslationWithKeyConverter}, ConverterParameter='Test'}"/>
但我必须为不同的标签做同样的事情,但键(ConverterParameter)会不同,其余的将保持不变
我想要一个标记扩展,让我可以这样写:
<Label Text="{local:MyMarkup Key=Test}"/>
此标记应生成与名为“Tanslations”的属性的绑定,其 valueconverter 为 TranslationWithKeyConverter,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标记扩展一样。让一个标记扩展返回另一个是行不通的。
-
Xamarin.Forms 已经有推荐的方法来执行此操作。请看developer.xamarin.com/guides/xamarin-forms/advanced/…
标签: c# xamarin data-binding xamarin.forms converter