xaml - Xamarin.Forms 在 Xaml 中为“数据绑定”单个值
问题描述
我有一个自定义控件,其属性名称为“PredefinedOptions”,类型为 IEnumerable。我想在 Xaml 中填充这个 IEnumerable。
这有效:
<c:EditNameValueControl Label="{l10n:Translate Salutation}"
<c:EditNameValueControl.PredefinedOptions>
<x:Array Type="{x:Type x:String}">
<x:String>value A</x:String>
<x:String>value B</x:String>
</x:Array>
</c:EditNameValueControl.PredefinedOptions>
</c:EditNameValueControl>
但是,如何为每个单独的字符串绑定或调用函数?
我有翻译 resx 文件和一个帮助类(字符串的 IMarkupExtension)来检索翻译,如下所示:
{l10n:Translate Salutation}
我想以相同的方式设置各个值(但不知道语法,或者这是否可能)。
例如:
<x:Array Type="{x:Type x:String}">
<x:String>{l10n:Translate ValueA}</x:String>
<x:String>{l10n:Translate ValueB}</x:String>
</x:Array>
作为一种解决方法,我现在在后面的代码中执行此操作,但想知道是否有解决方案。
解决方案
好吧。显然 x:Array 在技术上是一个 MarkupExtension (ArrayExtension)。
因此,一位同事发现我们可能会使用相同的语法:
<x:Array Type="{x:Type x:String}">
<l10n:Translate>ValueA</l10n:Translate>
<l10n:Translate>ValueB</l10n:Translate>
</x:Array>
是的,这似乎有效:)
推荐阅读
- class - Call property set function within class in Kotlin
- javascript - 如何根据对象中选择的答案返回数组
- sqlite - 错误:撰写文件“./docker-compose.yml”无效,因为:服务的配置选项不受支持:“sqlite3”
- google-apps-script - 如何在 Google Scripts 中分割时间戳并将其保存为整数?
- xml - Microsoft 流将文件转换为 windows-1251 并保存到 OneDrive
- openedge - OpenEdge Progress 10.1B 导出
- django - Django 2 中的 NoReverseMatch
- go - 使用 x509.MarshalPKCS1PublicKey 从 go 生成 RSA 公钥
- azure - MS AD Oauth2 重定向后丢失的会话数据
- stream - 如何使用 libav C++ 从实时流中获取帧尺寸