,xaml,xamarin.forms,data-binding"/>

首页 > 解决方案 > 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>

作为一种解决方法,我现在在后面的代码中执行此操作,但想知道是否有解决方案。

标签: xamlxamarin.formsdata-binding

解决方案


好吧。显然 x:Array 在技术上是一个 MarkupExtension (ArrayExtension)。

因此,一位同事发现我们可能会使用相同的语法:

<x:Array Type="{x:Type x:String}">
    <l10n:Translate>ValueA</l10n:Translate>
    <l10n:Translate>ValueB</l10n:Translate>
</x:Array>

是的,这似乎有效:)


推荐阅读