Xamarin动态网格布局

时间:2017-11-28 16:42:25

标签: c# xaml xamarin xamarin.forms

我有一组具有“ValueType”属性的对象,基于此属性,我调用一个DataTemplateSelector类,该类将返回要为该对象显示的控件类型。

<control:ControlDataTemplateSelector x:Key="personDataTemplateSelector"
                RangeTemplate="{StaticResource rangeControl}"
                EnumTemplate="{StaticResource pickControl}"
                DateTemplate="{StaticResource dateControl}"/>

<DataTemplate x:Key="rangeControl">
                <ViewCell>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <control:ScreenLabel   Grid.Row="0" Grid.Column="{Binding Path=SortOrder, Converter={StaticResource sortOrderToColIndexConverter}}"  Text="{Binding Path=TraitDescription}" />
                        <Entry Grid.Row="1" Grid.Column="{Binding Path=SortOrder, Converter={StaticResource sortOrderToColIndexConverter}}"   />
                    </Grid>
                </ViewCell>
            </DataTemplate>
            <DataTemplate x:Key="dateControl">
                <ViewCell>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <control:ScreenLabel   Grid.Row="0" Grid.Column="{Binding Path=SortOrder, Converter={StaticResource sortOrderToColIndexConverter}}" Text="{Binding Path=TraitDescription}" />
                        <DatePicker Grid.Row="1" Grid.Column="{Binding Path=SortOrder, Converter={StaticResource sortOrderToColIndexConverter}}"></DatePicker>
                    </Grid>
                </ViewCell>
            </DataTemplate>
            <DataTemplate x:Key="pickControl">
                <ViewCell>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <control:ScreenLabel   Grid.Row="0" Grid.Column="{Binding Path=SortOrder, Converter={StaticResource sortOrderToColIndexConverter}}"  Text="{Binding Path=TraitDescription}" />
                        <Picker Grid.Row="1" Grid.Column="{Binding Path=SortOrder, Converter={StaticResource sortOrderToColIndexConverter}}"  />
                    </Grid>
                </ViewCell>
            </DataTemplate>

我在使用两种列格式在网格中显示这些问题时遇到问题,例如,如果集合中有9个对象需要显示一个表格视图,每个列有4行,每行2列,第5行有一列。

使用我当前的代码,我得到了一种zig zag类型的布局。但我需要Like this需要一些建议

我正在寻找需要在iOS和Droid中运行的解决方案

2 个答案:

答案 0 :(得分:0)

我会在ViewCells中使用StackLayouts而不是Grids。 你可以这样做:

        <StackLayout VerticalOptions="FillAndExpand" >
            <control:ScreenLabel Text="{Binding Path=TraitDescription}" />
            <Entry />
        </StackLayout>

你确定你的Bindings正确回归了吗?我还没有在属性上看到逗号分隔的标记扩展设置。

答案 1 :(得分:0)

任何人都在寻找答案,我们使用FLowlist视图控件解决了这个问题。它提供了并排查看的选项

相关问题