4

在 Xamarin.Forms 3.5 中,Microsoft 向我们介绍了可绑定布局,可用于动态填充布局(例如StackLayoutGrid等)。

在具有单列的网格中使用它非常简单:

<Grid BindableLayout.ItemsSource="{Binding Items}">
    <BindableLayout.ItemTemplate>
        <DataTemplate>
            <Label Text="{Binding MyProperty}"/>
        </DataTemplate>
    </BindableLayout.ItemTemplate>
</Grid>

现在我的问题是如何使用它来填充具有多个列的网格,因为DataTemplate它只允许一个视图作为内容。当然,我可以在其中添加另一个Grid,但这将完全取消可绑定布局的价值Grid

4

2 回答 2

2

现在我的问题是,由于 DataTemplate 仅允许将一个视图作为内容,因此如何使用它来填充具有多列的网格。

Bindable Layouts中,我们可以看到:

虽然在技术上可以将可绑定布局附加到派生自 Layout 类的任何布局类,但这样做并不总是可行的,特别是对于 AbsoluteLayout、Grid 和 RelativeLayout 类。例如,考虑希望使用可绑定布局在 Grid 中显示数据集合的场景,其中集合中的每个项目都是包含多个属性的对象。Grid 中的每一行都应显示集合中的一个对象,Grid 中的每一列都显示该对象的一个​​属性。因为可绑定布局的 DataTemplate 只能包含单个对象,所以该对象必须是包含多个视图的布局类,每个视图在特定的 Grid 列中显示对象的一个​​属性。

如果你还想要更多的列,我建议你可以使用 StackLayout,它也能满足你的要求。

<StackLayout BindableLayout.ItemsSource="{Binding persons}">
        <BindableLayout.ItemTemplate>
            <DataTemplate>
                <StackLayout Orientation="Horizontal">
                    <Label Text="{Binding name}" />
                    <Label Text="{Binding age}" />
                </StackLayout>
            </DataTemplate>
        </BindableLayout.ItemTemplate>
    </StackLayout>
于 2019-08-30T06:22:27.807 回答
0

检查这个问题,似乎你试图完成的事情不能通过使用网格作为元素的可绑定布局来完成。

然而,文档并不像它应该的那样清晰。

于 2019-08-29T13:50:21.660 回答