Xaml 如何在Xamarin表单中创建具有iOS TableView分组样式的ListView?
我想创建一个具有iOS UITableView分组样式的ListView,如下图所示。我尝试了许多不同的方法:创建TableView自定义渲染器、创建ViewCell自定义渲染器、创建内容视图,但都不起作用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
如果只查找表格标题,则可以通过使用带有
标题的表格节
来实现:
<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 & 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();
}
}