使用 SfListView 自定义分组标题

问题描述 投票:0回答:0

我需要对项目进行分组,分组将从 Catalog 属性完成,然后我必须有一个自定义标题,其中包含一些包含这些项目的信息,例如:

  • 项目总数
  • 商品总价
  • 标题名称 我需要操作这些信息,这些信息将出现在每个分组的标题中,包括字体、大小、每个标签的位置。

这段代码显示了屏幕上的所有信息,但我无法操纵每个属性的值,它们是统一的并垂直对齐显示。

<syncfusion:SfListView ItemsSource="{Binding ListaCarrinhos}" BackgroundColor="White" AutoFitMode="DynamicHeight" VerticalOptions="FillAndExpand" >
                    <syncfusion:SfListView.DataSource>
                      <data:DataSource>
                        <data:DataSource.GroupDescriptors>
                          <data:GroupDescriptor PropertyName="Catalogo" />
                          <data:GroupDescriptor PropertyName="QtdTotal" />
                          <data:GroupDescriptor PropertyName="ValorTotal" />
                        </data:DataSource.GroupDescriptors>
                      </data:DataSource>
                    </syncfusion:SfListView.DataSource>
                    <syncfusion:SfListView.GroupHeaderTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <ViewCell.View>
                                    <StackLayout BackgroundColor="Black">
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="15" />
                                                <RowDefinition Height="15" />
                                            </Grid.RowDefinitions>

                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="50" />
                                            </Grid.ColumnDefinitions>

                                        </Grid>
                                        <Label Grid.Row="0" Grid.Column="0" x:Name="label" Text="{Binding Key}" TextColor="White" HeightRequest="30" VerticalOptions="Center" VerticalTextAlignment="Center" Margin="10,0,0,0" />
                                    </StackLayout>
                                </ViewCell.View>
                            </ViewCell>
                        </DataTemplate>
                    </syncfusion:SfListView.GroupHeaderTemplate>
                    <syncfusion:SfListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell >
                                <StackLayout BackgroundColor="LightGray">
                                    <Grid Margin="1" RowSpacing="0" BackgroundColor="White">

                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="25" />
                                            <RowDefinition Height="75" />
                                        </Grid.RowDefinitions>

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="62" />
                                            <ColumnDefinition Width="*" />
                                        </Grid.ColumnDefinitions>

                                        <Image Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Source="{Binding Imagem, Converter={StaticResource Base64ParaImagem}}"
                                               WidthRequest="60"
                                               MinimumWidthRequest="60"
                                               HorizontalOptions="Center">
            
                                        </Image>

                                         <Label Grid.Row="0" Grid.Column="1" TextColor="Gray" Text="{Binding Descricao}" BackgroundColor="White" HorizontalOptions="Start" VerticalOptions="Center" Margin="10,2,0,0"/>

如果我那样使用它,屏幕上不会显示任何信息,但是用黑色背景定义的 StackLayout 会增加尺寸。

<syncfusion:SfListView ItemsSource="{Binding ListaCarrinhos}" BackgroundColor="White" AutoFitMode="DynamicHeight" VerticalOptions="FillAndExpand" >
                    <syncfusion:SfListView.DataSource>
                      <data:DataSource>
                        <data:DataSource.GroupDescriptors>
                          <data:GroupDescriptor PropertyName="Catalogo" />
                          <data:GroupDescriptor PropertyName="QtdTotal" />
                          <data:GroupDescriptor PropertyName="ValorTotal" />
                        </data:DataSource.GroupDescriptors>
                      </data:DataSource>
                    </syncfusion:SfListView.DataSource>
                    <syncfusion:SfListView.GroupHeaderTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <ViewCell.View>
                                    <StackLayout BackgroundColor="Black">
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="15" />
                                                <RowDefinition Height="15" />
                                            </Grid.RowDefinitions>

                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="50" />
                                            </Grid.ColumnDefinitions>

                                        </Grid>
                                        <Label Grid.Row="0" Grid.Column="0" x:Name="label" Text="{Binding Key.Catalogo}" TextColor="White" HeightRequest="30" VerticalOptions="Center" VerticalTextAlignment="Center" Margin="10,0,0,0" />
                                        <Label Grid.Row="0" Grid.Column="0" x:Name="label1" Text="{Binding Key.QtdTotal}" TextColor="White" HeightRequest="30" VerticalOptions="Center" VerticalTextAlignment="Center" Margin="10,0,0,0" />
                                        <Label Grid.Row="0" Grid.Column="0" x:Name="label2" Text="{Binding Key.ItemCarrinhoModel.ValorTotal}" TextColor="White" HeightRequest="30" VerticalOptions="Center" VerticalTextAlignment="Center" Margin="10,0,0,0" />
                                    </StackLayout>
                                </ViewCell.View>
                            </ViewCell>
                        </DataTemplate>
                    </syncfusion:SfListView.GroupHeaderTemplate>
                    <syncfusion:SfListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell >
                                <StackLayout BackgroundColor="LightGray">
                                    <Grid Margin="1" RowSpacing="0" BackgroundColor="White">

                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="25" />
                                            <RowDefinition Height="75" />
                                        </Grid.RowDefinitions>

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="62" />
                                            <ColumnDefinition Width="*" />
                                        </Grid.ColumnDefinitions>

                                        <Image Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Source="{Binding Imagem, Converter={StaticResource Base64ParaImagem}}"
                                               WidthRequest="60"
                                               MinimumWidthRequest="60"
                                               HorizontalOptions="Center">
            
                                        </Image>
xaml xamarin.forms xamarin.android xamarin.ios syncfusion
© www.soinside.com 2019 - 2024. All rights reserved.