如何在Xamarin Forms中显示嵌套的项目列表?

kas*_*pur 9 c# android xamarin xamarin.forms

我正在尝试让Xamarin Forms在列表中显示列表.我见过其他人说嵌套在ListView中的ListView不受支持.我试图在ListView中添加一个控件,并将嵌套列表绑定到控件,但每当我尝试绑定它时,它总会崩溃我的应用程序.

我还发现有些人建议使用分组.分组DOES工作,但我发现的问题是我无法点击分组部分.此外,分组不会实时更新(这是一项要求).

为了最终结果,我想要一些简单的事情:

  • ApartmentName1
  • 地址
  • 经理电话号码
  •      租户1,电话号码
  •      租客2,电话号码
  •      租户3,电话号码
  • ApartmentName2
  • 地址
  • 经理电话号码
  •      租户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; }
}
Run Code Online (Sandbox Code Playgroud)

这是我试图开始工作的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>
Run Code Online (Sandbox Code Playgroud)

我只是想显示一个列表,其中包含一个列表.我对如何通过Xamarin Forms这样做提出任何建议.

Dav*_*vid 2

我想说的是跳过 XAML,只需在代码中按照您想要的方式进行布局即可。

使用 StackLayouts 和/或网格,不要依赖半神奇的 ListViews 数据绑定。现在有好几次,我从 ListView 开始,但后来我用 ForEachLoop 刮掉了它。您可以在代码中执行任何可以在 XAML 中执行的操作,最终您可能会更满意。

  • 这是答案还是推荐? (3认同)