在XAML中定义集合

时间:2016-10-03 16:50:58

标签: xaml xamarin.forms markup-extensions

我想创建一个绑定到XAML中定义的字符串集合。

在WPF中,我可以创建一个ArrayList作为带有密钥的资源,可以用作绑定源(使用StaticResource)。

这可能是Xamarin Forms吗?

编辑:我已经尝试过使用@Stephane Delcroix提出的解决方案的XAML,但我得到了一个未处理的异常:

<?xml version="1.0" encoding="utf-8"?>

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             x:Class="ReferenceApp.Views.GamesPage"
             Title="Games">


    <ContentPage.Resources>
        <x:Array Type="{x:Type sys:String}" x:Key="array">
            <x:String>Hello</x:String>
            <x:String>World</x:String>
        </x:Array>
    </ContentPage.Resources>
    <Grid />

</ContentPage>

但是,如果我删除<x:Array >... </x:Array>

,则不会抛出异常

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您可以使用内置的x:Array

<x:Array Type="{x:Type sys:String}" x:Key="array">
    <x:String>Hello</x:String>
    <x:String>World</x:String>
</x:Array>

sys定义为xmlns:sys="clr-namespace:System;assembly=mscorlib"

或您喜欢的任何收藏品,例如List

<scg:List x:TypeArguments="{x:Type sys:String}" x:Key="genericList">
    <x:String>Hello</x:String>
    <x:String>World</x:String>
</scg:List>

如前所述定义sysscgxmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"

答案 1 :(得分:2)

我发现您使用的是 XF标准扩展程序。您的错误似乎在Type="{x:Type sys:String}",而不是 sys:String 您应该写 x:String ,它出现在常见的 xmlns:x

在此示例中,我使用字符串

填充列表视图
<ListView Margin="10">
    <ListView.ItemsSource>
        <x:Array Type="{x:Type x:String}">
            <x:String>Hello</x:String>
            <x:String>World</x:String>
        </x:Array>
    </ListView.ItemsSource>            
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding}" />
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>                
</ListView>