簡體   English   中英

Xamarin動態網格布局

[英]Xamarin dynamic grid layout

我有一個具有“ 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行(具有一列)。

用我當前的代碼,我得到一種之字形的布局。 但我需要這樣需要一些建議

我正在尋找需要在iOS和Droid中工作的解決方案

我會在您的ViewCells內部使用StackLayouts而不是Grids。 你可以做:

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

您確定綁定正確返回嗎? 我尚未在屬性上看到逗號分隔的標記擴展設置。

任何尋求答案的人都可以使用FLowlist視圖控件來解決它。 它提供了並排查看的選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM