【问题标题】:How can I display a nested list of items in Xamarin Forms?如何在 Xamarin Forms 中显示嵌套的项目列表?
【发布时间】:2016-01-18 02:45:53
【问题描述】:

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

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

对于最终结果,我想要一些简单的东西:

  • 公寓名称1
  • 地址
  • 经理电话号码
  •      租户 1,电话号码
  •      租户 2,电话号码
  •      租户 3,电话号码
  • 公寓名称2
  • 地址
  • 经理电话号码
  •      租户 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 表单执行此操作的任何建议。

【问题讨论】:

    标签: c# android xamarin xamarin.forms


    【解决方案1】:

    如果我要显示不同项目的列表,我可能会使用 TableView 而不是 ListView。 TableView 不是数据绑定的,因此您必须手动构建它们,但它们允许您根据每行中显示的数据灵活地拥有不同类型的单元格。

    如果您想坚持使用分组的 ListView,您可以创建一个自定义组标题视图,其中包含一个可以响应点击手势的按钮(或其他元素)。

    【讨论】:

    • 问题很清楚,但它闻起来像 UWP(或 WPF)xaml。我们有同样糟糕的经历。我没有时间尝试不使用 xaml,我应该尝试手动绑定子列表视图吗?
    【解决方案2】:

    我会说跳过 XAML 并在代码中按照您想要的方式进行布局。

    使用 StackLayouts 和\或 Grids,不要依赖半神奇的 ListViews 数据绑定。现在有好几次我从 ListView 开始,但后来我用 ForEachLoop 刮掉了它。你可以在代码中做任何你可以在 XAML 中做的事情,最终你可能会更快乐。

    【讨论】:

    • 是回答还是推荐?
    • 我不相信。用 XAML 编写你的 UI 是最好的方法,如果你抓到一些书就会看到建议。
    • 阅读书友。它不会改变它。最后 直到有所见即所得的编辑器 XAML 与纯代码相比没有任何优势。 1. 执行速度较慢。 2. 开发没有调试器,智能感知少。 3.它比代码更冗长,假设你保持你的代码干净。像这样的情况总是会出现,如果 OP 使用 C# 来启动这将永远不会成为问题。
    猜你喜欢
    • 2018-02-16
    • 2019-02-13
    • 2018-07-18
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多