【问题标题】:Xamarin.Forms "databind" individual values in Xaml for <x:Array type="{x:Type x:String}">Xamarin.Forms 在 Xaml 中为 <x:Array type="{x:Type x:String}">“数据绑定”单个值
【发布时间】:2019-08-29 08:38:35
【问题描述】:

我有一个自定义控件,其属性名称为“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>

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

【问题讨论】:

    标签: xaml xamarin.forms data-binding


    【解决方案1】:

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

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

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

    是的,这似乎有效:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多