每个Listview行有多个单元格?

时间:2017-01-10 15:24:35

标签: xamarin.forms

发现奇怪的是我还没有看到任何其他的SO或文档但是,我想知道是否有可能有一个Xamarin Forms Listview(循环缓存策略,如果这有所不同)每行有多个细胞?现在我们有listview,只显示300宽度的图像(每边10个填充,使其居中)。这在iPhone上运行得很好,但是在iPad上它看起来有点笨拙有空白量(你可以想象,在iPad上只有一个300宽的图像。)有没有办法让listview包含多个单元格行?特别是,如果它可以是变量。所以在肖像上它可以是2,在风景上它可以是3。

XAML:

  <ListView x:Name="gridList" CachingStrategy="RecycleElement" ItemAppearing="gridList_ItemAppearing">
  </ListView>

背后的代码

public System.Collections.ObjectModel.ObservableCollection<ViewModels.GridCellViewModel> cells { get; set; }
gridList.ItemTemplate = new DataTemplate(typeof(Classes.CustomGridCell));
gridList.ItemsSource = cells;

GridCellViewModel

 public class GridCellViewModel
    {
        public string Image { get; set; }
        public string Headline { get; set; }
        public Xamarin.Forms.ActivityIndicator ActivityIndicator { get; set; }
        public bool IsAd { get; set; }        
        public bool AdHasLoaded { get; set; } = false;
        public int collectionIndex { get; set; }
        public int rawCellIndex { get; set; }
        public int numberOfStories { get; set; }
        public DateTime LoadPageDate { get; set; }
        public int StoryId { get; set; }
    }

CustomGridCell

    layout = new Xamarin.Forms.Grid();
    layout.RowDefinitions.Add(new Xamarin.Forms.RowDefinition { Height = new Xamarin.Forms.GridLength(1, Xamarin.Forms.GridUnitType.Star) });
    layout.ColumnDefinitions.Add(new Xamarin.Forms.ColumnDefinition { Width = new Xamarin.Forms.GridLength(1, Xamarin.Forms.GridUnitType.Star) });
    layout.Children.Add(LoadingText, 0, 0);
    layout.Children.Add(cellImage, 0, 0);
    layout.HorizontalOptions = Xamarin.Forms.LayoutOptions.CenterAndExpand;
    layout.VerticalOptions = Xamarin.Forms.LayoutOptions.CenterAndExpand;
    cellImage.HorizontalOptions = Xamarin.Forms.LayoutOptions.CenterAndExpand;
    cellImage.VerticalOptions = Xamarin.Forms.LayoutOptions.CenterAndExpand;
    cellImage.WidthRequest = 260;
    cellImage.HeightRequest = 173;
    View = layout;

1 个答案:

答案 0 :(得分:0)

Xamarin.Forms.ListView不支持每行包含多个单元格。您可以使用DataTemplateSelector根据行使用不同的单元格,但就是这样。

我建议原生创建此控件。我还要补充一点,我从未见过一个列表中每行有多个单元格的应用程序。我见过大单元格中有大量信息,但连续多个单元格没有。