更改列表视图标题和组标题垂直顺序

时间:2018-03-13 15:03:37

标签: c# xaml xamarin xamarin.forms

使用xamarin表格。 我有列表视图包含标题和组标题,如下所示。

      <ListView x:Name="Groups" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
        SeparatorVisibility="Default" RowHeight="100" HasUnevenRows="True" IsGroupingEnabled="True" Header="">
                <ListView.GroupHeaderTemplate>
                    <DataTemplate>
                        <TextCell Height="50"  Text="{Binding GroupName}" TextColor="White" />
                    </DataTemplate>
                </ListView.GroupHeaderTemplate>

                <ListView.Header>

                <Grid BackgroundColor="#941a24" Margin="0,10,0,0">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Label Grid.Column="0" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" TextColor="White" x:Name="Order" />
                        <Label Grid.Column="1" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" TextColor="White" x:Name="Name"/>
               </Grid>

                </ListView.Header>


                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <ViewCell.View>
                               //items
                            </ViewCell.View>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

列表视图的标题会立即显示在组标题上方但我想在标题上方显示组标题(不更改列表视图Binding对象),这样每次组标题出现时都会显示列表视图标题显示在下方。

1 个答案:

答案 0 :(得分:1)

无论您在XAML中定义标题/组标题,它都会被编译,您将始终获得组标题和项目(see more on official docs)上方的列表标题。< / p>

如果您希望每次显示组标题时列表视图标题显示在下方,只需将组标题模板更改为ViewCell并编码实际的“列表标题”内容在里面。

这样的事情:

<ListView x:Name="Groups" 
          HorizontalOptions="FillAndExpand" 
          VerticalOptions="FillAndExpand"
          SeparatorVisibility="Default" 
          RowHeight="100" 
          HasUnevenRows="True" 
          IsGroupingEnabled="True">
    <ListView.GroupHeaderTemplate>
        <DataTemplate>
        <ViewCell>
            <StackLayout Spacing="0">
                <Label Text="{Binding GroupName}" 
                       TextColor="White"
                       VerticalTextAlignment="Center"
                       VerticalOptions="Fill"
                       HeightRequest="50"/>
                <Grid BackgroundColor="#941a24" 
                      VerticalOptions="FillAndExpand"
                      HorizontalOptions="FillAndExpand"
                      Margin="0,10,0,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Label x:Name="Order" 
                           Grid.Column="0" 
                           HorizontalTextAlignment="Center" 
                           VerticalTextAlignment="Center" 
                           TextColor="White"/>
                    <Label x:Name="Name"
                           Grid.Column="1" 
                           HorizontalTextAlignment="Center" 
                           VerticalTextAlignment="Center" 
                           TextColor="White"/>
                </Grid>
            </StackLayout>
    </ListView.GroupHeaderTemplate>
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <ViewCell.View>
                   //items
                </ViewCell.View>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我希望它可以帮到你。