Xaml 如何在Xamarin表单中创建具有iOS TableView分组样式的ListView?

Xaml 如何在Xamarin表单中创建具有iOS TableView分组样式的ListView?,xaml,xamarin,xamarin.forms,xamarin.ios,Xaml,Xamarin,Xamarin.forms,Xamarin.ios,我想创建一个具有iOS UITableView分组样式的ListView,如下图所示。我尝试了许多不同的方法:创建TableView自定义渲染器、创建ViewCell自定义渲染器、创建内容视图,但都不起作用 如果只查找表格标题,则可以通过使用带有标题的表格节来实现: <TableView> <TableRoot> <TableSection Title="Keyboards"> <EntryCell Lab

我想创建一个具有iOS UITableView分组样式的ListView,如下图所示。我尝试了许多不同的方法:创建TableView自定义渲染器、创建ViewCell自定义渲染器、创建内容视图,但都不起作用


如果只查找表格标题,则可以通过使用带有
标题的
表格节
来实现:

<TableView>
    <TableRoot>
        <TableSection Title="Keyboards">
            <EntryCell Label="Deault" Placeholder="default" />
            <EntryCell Label="Chat" Placeholder="omg brb ttyl gtg lol" Keyboard="Chat" />
            <EntryCell Label="Email" Placeholder="sales@xamarin.com" Keyboard="Email" />
            <EntryCell Label="Numberic" Placeholder="55" Keyboard="Numeric" />
            <EntryCell Label="Telephone" Placeholder="+1 012 345 6789" Keyboard="Telephone" />
            <EntryCell Label="Text" Placeholder="text" Keyboard="Text" />
            <EntryCell Label="Url" Placeholder="http://developer.xamarin.com" Keyboard="Url" />
        </TableSection>.
        <TableSection Title="States &amp; Colors">
            <EntryCell Label="Colorful" Placeholder="text" LabelColor="Red" />
            <EntryCell Label="Disabled" Placeholder="text" IsEnabled="false" />
            <EntryCell Label="Colorful + Disabled" Placeholder="text" IsEnabled="false" LabelColor="Red" />
        </TableSection>
    </TableRoot>
</TableView>

.
结果:

如果要查找每个节的页眉/页脚,可以将页眉和页脚包装在每个表节内部的视图单元格中的listview


源:

您可以尝试使用
列表视图渲染器
,在此渲染器中,使用相同的
将本机控件更改为新的分组样式
UITableView

public class MyListViewRenderer : ListViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
    {
        base.OnElementChanged(e);

        if (Element != null)
        {
            var groupTable = new UITableView(Control.Frame, UITableViewStyle.Grouped);
            groupTable.Source = Control.Source;

            // Create a new UIRefreshControl for this tableView, then fire the command when it begin refreshing
            var refreshControl = new UIRefreshControl();
            groupTable.RefreshControl = refreshControl;
            refreshControl.AddTarget((sender, args) =>
            {
                ListView listView = Element;
                listView.RefreshCommand.Execute(null);
            }, UIControlEvent.ValueChanged);

            SetNativeControl(groupTable);
        }

    }
}

我使用了这个解决方案,但现在,我有另一个问题:我使用拉刷新,当我使用这个解决方案时,拉刷新不起作用。你对此有什么想法吗?@ViníciusdaCruzMaia请查看我的更新。我必须对你的解决方案做一些更改。进修的办法不管用。解决方案是使用James Montemagno()的PullToRefreshLayout。在渲染器中使用分组样式,单元格的背景色始终为灰色,然后我必须在ViewCell内部使用ContentView,并将ContentView的背景色设置为白色。该解决方案的问题是,如果我想在ViewCell中使用StyleId=disposition,disposition指示符的背景色仍然是灰色的。对不起,英语错误。我的英语很基础
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    base.OnElementPropertyChanged(sender, e);

    if (Element.IsRefreshing == false)
    {
        Control.RefreshControl.EndRefreshing();
    }
}