ListView 无法使用 Xamarin Forms 正确呈现

Posted

技术标签:

【中文标题】ListView 无法使用 Xamarin Forms 正确呈现【英文标题】:ListView not rendering properly using Xamarin Forms 【发布时间】:2016-09-24 14:42:53 【问题描述】:

自从我上次做移动开发以来已经有一段时间了。现在,我正在尝试使用 Xamarin Forms 更新我的知识。

我创建了一个 Xamarin Froms 项目。但是,我在将数据集合呈现到 ListView 内容中时遇到了一些问题。我只能看到树标签的第一个元素。

这是 XAML 代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ExampleBooks.View.BooksView"
             Title="Books">

  <ScrollView>
    <StackLayout>
      <ListView x:Name="ListViewBooks"
              ItemsSource="Binding Books">
        <ListView.ItemTemplate>
          <DataTemplate>
            <ViewCell>
              <ViewCell.View>
                <StackLayout Padding="10" Orientation="Vertical">
                  <Label Text="Binding Title" FontSize="Large" VerticalOptions="Center"></Label>
                  <Label Text="Binding Author" FontSize="Small"></Label>
                  <Label Text="Binding Description" FontSize="14"></Label>
                </StackLayout>
              </ViewCell.View>
            </ViewCell>
          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>
    </StackLayout>
  </ScrollView>
</ContentPage>

这是使用上述代码渲染数据的截图:

如您所见,AutorDescriptionLabel 未显示。据我所知,应该显示 ListView 中嵌套 StackLayout 内的所有树元素。但是,我只能看到第一个。

我尝试过使用 Padding 和 Spacing 属性。但是,它们似乎都没有帮助。

我在这里遗漏了什么吗?任何帮助/线索都会有所帮助。

P.D.我正在使用安卓模拟器。然而,同样的情况也发生在 Windows Phone 模拟器中。

谢谢

【问题讨论】:

如果您不绑定作者和描述,而只是将它们设置为静态文本,是否有效?顺便说一句,您永远不应该将 ListView 放在 ScrollView 中,这不会导致您的问题,但仍然是一个坏主意。 也尝试从第一个标签中删除 VerticalOptions=Center。 【参考方案1】:

增加你的ListViewRowHeight

<ListView x:Name="ListViewBooks"
          ItemsSource="Binding Books"
          RowHeight="100">

【讨论】:

@MikePR 我建议不要为您的ListView.RowHight 设置静态值,因为文本大小和位置在不同的设备、方向和由设备控制的文本大小设置上可能会有所不同。最好将ListView.HasUnevenRows 设置为true

以上是关于ListView 无法使用 Xamarin Forms 正确呈现的主要内容,如果未能解决你的问题,请参考以下文章

Json 到 ListView - 无法将类型转换为 IEnumerable - Xamarin

无法捕获 Xamarin ListView GroupHeader 单击事件

我无法通过 ListView(Xamarin.Forms) 显示员工的姓名、任务和日期

Xamarin.Forms 解决ListView高度问题

Xamarin 在 ListView 中全选

通过拖放功能重新排序 Xamarin 表单中的 ListView