WPF内联x:绑定上的数组

时间:2017-12-08 16:17:05

标签: c# arrays wpf xaml

是否可以在XAML中使用内联数组?

我正在尝试改变这样的事情:

<Control>
    <Control.Property>
        <Binding Path="MyVariable" Converter="{StaticResource MyConverter}">
            <Binding.ConverterParameter>
                <x:Array Type="s:Boolean">
                    <s:Boolean>True</s:Boolean>
                    <s:Boolean>False</s:Boolean>
                </x:Array>
            </Binding.ConverterParameter>
        </Binding>
    </Control.Property>
</Control>

这样的事情:

<Control Property="{Binding MyVariable, 
 Converter={StaticResource MyConverter},
 ConverterParameter={x:Array s:Boolean, Items=[]{ {s:Boolean True}; {s:Boolean False} }}}" 
/>

但Visual Studio向我显示以下错误“属性”:

  

“IList”的TypeConverter不支持从字符串转换

OBS:

  • 我不知道这是否是XAML中内联x:数组的正确语法,我写道,因为它是唯一一个VS没有抱怨的
  • 当然这个例子似乎并不实用,只是一种简单的方式来展示我正在寻找的东西

1 个答案:

答案 0 :(得分:0)

  

是否可以在XAML中使用内联数组?

没有。我担心没有有效的语法来定义数组&#34; inline&#34;在XAML。

您可以使用x:Key

将其定义为可重复使用的资源
<x:Array x:Key="array" Type="s:Boolean">
    <s:Boolean>True</s:Boolean>
    <s:Boolean>False</s:Boolean>
</x:Array>

..然后使用StaticResource标记扩展名引用它。

<Control Property="{Binding MyVariable, 
         Converter={StaticResource MyConverter},
         ConverterParameter={StaticResource arr}}" />

或者您可以定义自定义数组类并将其定义为资源:

<local:MyCollectionType />

例如,如果您不想在XAML标记中浪费更多行,则可以使用其构造函数中的项填充自定义类型。但是没有内置支持这样的东西:

Items=[]{ {s:Boolean True}; {s:Boolean False} }}}" 

另一种方法是创建custom markup expression