Xamarin.forms 每个Listview行有多个单元格?

Xamarin.forms 每个Listview行有多个单元格?,xamarin.forms,Xamarin.forms,奇怪的是,我没有看到任何其他SO或文档,但我想知道是否有可能拥有一个每行有多个单元格的Xamarin表单列表视图(循环缓存策略,如果有区别的话)?现在我们有一个listview,它只显示一个300宽的图像(每边10个填充以使其居中)。这在iPhone上效果很好,但在iPad上,它看起来有点呆板,有大量的空白(你可以想象,iPad上只有300宽的图像)。有没有办法让listview每行包含多个单元格?特别是,如果它可以是一个变量。所以在纵向上可以是2,在横向上可以是3 XAML: 自定义网格单元

奇怪的是,我没有看到任何其他SO或文档,但我想知道是否有可能拥有一个每行有多个单元格的Xamarin表单列表视图(循环缓存策略,如果有区别的话)?现在我们有一个listview,它只显示一个300宽的图像(每边10个填充以使其居中)。这在iPhone上效果很好,但在iPad上,它看起来有点呆板,有大量的空白(你可以想象,iPad上只有300宽的图像)。有没有办法让listview每行包含多个单元格?特别是,如果它可以是一个变量。所以在纵向上可以是2,在横向上可以是3

XAML:

自定义网格单元

    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;

Xamarin.Forms.ListView不支持每行有多个单元格。可以根据行使用不同的单元格,但仅此而已


我建议以本机方式创建此控件。我还要补充一点,我从未见过一个应用程序的列表中每行有多个单元格。我见过大的单元格,里面有很多信息,但不是一行多个单元格

你是说包装纸?不,我指的是列表视图。我想知道这是否可能。也许不是。我真的很感谢你分享这一点。事实上。。。列表视图不能满足这一要求。因此,您需要恢复到另一个控件。
public System.Collections.ObjectModel.ObservableCollection<ViewModels.GridCellViewModel> cells { get; set; }
gridList.ItemTemplate = new DataTemplate(typeof(Classes.CustomGridCell));
gridList.ItemsSource = cells;
 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; }
    }
    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;