如何在Xamarin表单中显示嵌套的项目列表?
本文关键字:嵌套 项目 列表 显示 Xamarin 表单 | 更新日期: 2023-09-27 18:18:26
我试图让Xamarin Forms在列表中显示列表。我看到其他人说在ListView中嵌套ListView是不被支持的。我曾尝试在ListView中添加一个控件,并将嵌套列表绑定到控件,但每当我尝试绑定到它时,总是会崩溃我的应用程序。
我也发现有些人建议使用分组。分组确实工作,但是我发现的问题是我不能点击分组部分。此外,分组将不会实时更新(这是一个要求)。
对于最终结果,我想要一些简单的东西,如:
- ApartmentName1 <
- 地址/gh>
- 经理电话
- 租户1、电话号码
- 租户2、电话号码
- 租户3、电话号码
- ApartmentName2 <
- 地址/gh>
- 经理电话
- 租户1、电话号码
- 租户2、电话号码
- 租户3、电话号码
下面是我想在Xamarin Forms项目中显示的一个示例对象。
public class Apartment
{
public string ApartmentName { get; set; }
public string Address { get; set; }
public string ManagerPhoneNumber { get; set; }
public List<Tenant> Tenants { get; set; }
}
public class Tenant
{
public string FullName { get; set; }
public string PhoneNumber { get; set; }
public DateTime ContractExpireDate { get; set; }
}
这是我试图得到工作的Xaml
<ContentView>
<StackLayout>
<ListView x:Name="apartmentListView" HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout VerticalOptions="StartAndExpand">
<StackLayout Orientation="Horizontal" BackgroundColor="Gray">
<Label HorizontalOptions="StartAndExpand" Text="{Binding ApartmentName}" />
<Label HorizontalOptions="End" Text="{Binding Address}" />
</StackLayout>
<Label Text="{Binding ManagerPhoneNumber}" />
<control:TenantViewTemplate Tenants="{Binding Tenants}" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentView>
我只是想显示一个列表,它包含一个列表。对于如何通过Xamarin Forms实现这一点,我愿意接受任何建议。
如果我要显示不同项目的列表,我可能会使用TableView而不是ListView。tableview不是数据绑定的,所以你必须手动构建它们,但它们允许你灵活地根据每行显示的数据拥有不同类型的单元格。
如果你想坚持使用分组ListView,你可以创建一个自定义的组标题视图,其中包含一个按钮(或其他元素),可以响应点击手势。
我建议跳过XAML,按照您想要的方式在代码中进行布局。
使用StackLayouts和grid,不要依赖于半魔法的ListViews数据绑定。现在我有几次开始使用ListView,只是为了达到后来我使用ForEachLoop的点。您可以在代码中做任何可以在XAML中做的事情,并且您最终可能会更快乐。