Xamarin窗体 – 如何使iOS ListView本机分组样式与头?

我已经在Xamarian窗体中创build了一个使用MVVM和绑定的列表视图来创build一个分组列表。我希望列表视图具有适用于iOS的UITableView样式组。 我试图通过我在网上find的自定义渲染器来创build这个,但是结果看起来不对,因为一切都是灰色的。

首先,我们将从图像开始。 这就是我想要的表格看起来像我从原生的iOS版本拿来的:

Histroy分组

当我添加自定义渲染器时,我得到以下Xamarin表单版本:

Xamarin形式自定义列表视图

我玩弄背景颜色,试图使它们透明,我发现,当我做了listview背景颜色=“透明”,原来的列表视图下。 显示在以下两张图片中。

在这里输入图像说明

在这里输入图像说明

xaml页面如下所示:

<StackLayout Spacing="0"> <SearchBar x:Name="SearchBarControl" Text="{Binding SearchText}" SearchCommand="{Binding SearchCommand}" Placeholder="Search"></SearchBar> <ListView x:Name="HistoryList" IsGroupingEnabled="True" GroupDisplayBinding="{Binding Title}" ItemsSource="{Binding History}" CachingStrategy="RecycleElement"> <ListView.ItemTemplate> <DataTemplate> <TextCell Text="{Binding TagContent}" Detail="{Binding DateAndTime}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> 

我相信自定义渲染器应该将其分组:

 [assembly: ExportRenderer(typeof(ListView), typeof(iOSListViewCustomRenderer))] namespace Test.iOS.CustomRenderer { public class iOSListViewCustomRenderer : ListViewRenderer { protected override void OnElementChanged(ElementChangedEventArgs<ListView> e) { base.OnElementChanged(e); if (this.Control != null && e.NewElement != null) { var tbl = new UITableView(this.Bounds, UITableViewStyle.Grouped) { Source = this.Control.Source, }; this.SetNativeControl(tbl); } } } } 

如果有人需要看别的东西,请告诉我。

我知道tableview控件的forms给了我适当的外观,但它似乎是静态内容,而不是SQL数据库中的dynamic信息。

我尝试通过制作自定义单元格来使单元格变白,但这并没有改变任何内容。

我怎么能得到的Xamarinforms列表视图看起来像细胞是白色的第一个图像,并在该风格的组?

我build议你使用GroupHeaderTemplate而不是Custom Renderers

你可以自定义ListView的组页眉而不是使用普通的风格。

 <ListView.GroupHeaderTemplate> <DataTemplate> <ViewCell Height="50" > <ViewCell.View> <StackLayout > <Label Text ="{Binding Title}" Margin="15,30,0,5" FontSize="Medium" TextColor="Gray" /> </StackLayout> </ViewCell.View> </ViewCell> </DataTemplate> </ListView.GroupHeaderTemplate> 

GroupDisplayBinding是不需要的,并设置HasUnevenRows来启用增加单元格高度。

 <ListView x:Name="listView" IsGroupingEnabled="True" HasUnevenRows="True"> 

在这里输入图像说明

详情请参考这里