Xamarin将ListView绑定到可观察集合中的子对象列表

Xamarin将ListView绑定到可观察集合中的子对象列表,listview,xamarin.forms,Listview,Xamarin.forms,如果答案显而易见,请原谅。。我对Xamarin和Forms相当陌生,但对编程或C#不熟悉。 我有一个ListView,它可以正常工作并绑定顶级对象及其直接属性。它是GameDTOModel对象的可观察集合 公共ObservableCollection ActiveGamesCollection{get;}=new ObservableCollection(); GameDTOModel如下所示: 公共类游戏模型 { 公共int Id{get;set;} 公共字符串名称{get;set;} //

如果答案显而易见,请原谅。。我对Xamarin和Forms相当陌生,但对编程或C#不熟悉。 我有一个ListView,它可以正常工作并绑定顶级对象及其直接属性。它是GameDTOModel对象的可观察集合

公共ObservableCollection ActiveGamesCollection{get;}=new ObservableCollection(); GameDTOModel如下所示:

公共类游戏模型
{
公共int Id{get;set;}
公共字符串名称{get;set;}
//此游戏使用哪种游戏类型
公共游戏类型游戏类型{get;set;}
}
游戏类型如下所示:

公共类游戏类型
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection奖品{get;set;}
}
奖品是这样的:

公共班级奖
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串ImageURL{get;set;}
}
到目前为止,就像我说的那样简单。我可以访问ActiveGamesCollection中的对象,并将其绑定到ListView。 我希望能够在奖品对象的ImageURL属性中显示图像。例如,一个游戏可能有一个有3个奖品的游戏类型,因此它是一个列表。 我的XAML如下所示:


Itemsource和其他内容在代码隐藏中设置:

GamesView.ItemsSource=gamesmodel.ActiveGamesCollection;
GamesView.SelectedItem=gamesmodel.SelectedGame;
GamesView.IsPullToRefreshEnabled=true;
我也有一个列表对象中的ActiveGames副本,但需要可观察的集合来填充ListView。(似乎)

我希望能够在ListView中列出这3幅图像,但我很难绑定到ActiveGamesCollection.GameType.奖品,因为它是一个可观察的集合。 另外,通过阅读,我发现不应该在listview中嵌套listview,所以我也需要一个解决方案。我想我可以用一个gridview,但只要能找到它们就可以了

有人给我指路吗?
谢谢。

您可以在ViewCell内使用动态Rap布局来显示图像

<suave:DynamicWrapLayout ItemsSource="{Binding Items}" HorizontalOptions="Fill">
        <suave:DynamicWrapLayout.ItemTemplate>
            <DataTemplate>
                <StackLayout BackgroundColor="Gray" WidthRequest="120" HeightRequest="180">
                    <Label Text="{Binding .}" TextColor="White" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" />
                </StackLayout>
            </DataTemplate>
        </suave:DynamicWrapLayout.ItemTemplate>
</suave:DynamicWrapLayout>

参考文献


你是否有一个未定义的奖品数量为每一场比赛,或它总是3个项目?是的,对不起,我应该说清楚。。。游戏类型可以有最小1到最大“未定义”-由常识-奖品定义。{Binding GameType.Pries[0].ImageUrl}将为您获取图像的路径,但您必须硬编码索引,因此很难为数量不确定的奖品进行布局,我意识到…您可以尝试创建自己的视图,该视图应该能够接收该列表(
{Binding GameType.values}
),并按照您的意愿呈现它,基本上就像。也许这就是路。我还没有使用这个组件的经验,所以我现在不能分享一个答案,但我会研究一下。