如何x:绑定集合的集合?

时间:2016-08-02 07:16:14

标签: c# uwp-xaml

我试图通过FlipView元素显示集合集合,我在使用正确的绑定设置时遇到问题。我必须为DataTemplate元素设置x:DataType,但我找不到任何方法来设置List类型。

这是我的例子。它只是一个原型项目,所以我不使用MVVM使其变得更简单:

public sealed partial class MainPage : Page
{
    public List<List<CustomItems>> ItemList;
    public MainPage()
    {
        this.InitializeComponent();
        ItemList = new List<List<CustomItems>>();

        List<CustomItems> tlist = new List<CustomItems>();
        tlist.Add(new CustomItems { title = "test1", text = "first text", url = new Uri("http://microsoft.com") });
        ItemList.Add(tlist);

        tlist = new List<CustomItems>();
        tlist.Add(new CustomItems { title = "test2", text = "second text", url = new Uri("http://google.com") });
        tlist.Add(new CustomItems { title = "test2-1", text = "second 1 text", url = new Uri("http://gmail.google.com") });
        tlist.Add(new CustomItems { title = "test2-2", text = "second 2 text", url = new Uri("http://drive.google.com") });
        ItemList.Add(tlist);

        tlist = new List<CustomItems>();
        tlist.Add(new CustomItems { title = "test3", text = "third text", url = new Uri("http://stackoverflow.com") });
        ItemList.Add(tlist);

我的xaml:

<Page
    x:Class="grids.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:grids"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" Width="850" Height="600"
    xmlns:data="using:grids.Models"
    >

    <Grid Width="850" Height="600" >
        <FlipView x:Name="gridView" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" 
                  Width="850" ItemsSource="{x:Bind ItemList}">
            <FlipView.ItemTemplate>
                <DataTemplate x:DataType="WHAT_SHOULD_BE_HERE?">
                    <FlipView ItemsSource="{x:Bind}">
                        <FlipView.ItemTemplate>
                            <DataTemplate x:DataType="data:CustomItems">
                                <StackPanel>
                                    <TextBlock Text="{x:Bind title}"></TextBlock>
                                    <WebView Source="{x:Bind url}" Width="850" Height="400" />
                                </StackPanel>
                            </DataTemplate>
                        </FlipView.ItemTemplate>
                    </FlipView>
                </DataTemplate>
            </FlipView.ItemTemplate>
        </FlipView>
    </Grid>
</Page>

使用x:Bind我必须设置x:DataType,但是我告诉我没有看到为第一个FlipView设置List-type的任何方法。我曾尝试使用指向System.Collections.Generic的单独xml,但我不能从那里使用List。在某个地方,我已经看到了创建自己继承自List&gt;的类的建议,我也尝试过,xaml代码检查然后允许我构建项目,但是我得到了运行时异常:&& #34;抛出new global :: System.ArgumentException(&#34;传递给模板的类型不正确。基于x:DataType global :: grids.Models.MyCollection是预期的。&#34;);&#34; 那么任何人都可以解释一下,这样做的正确方法是什么?

0 个答案:

没有答案