发现奇怪的是我还没有看到任何其他的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;
答案 0 :(得分:0)
Xamarin.Forms.ListView不支持每行包含多个单元格。您可以使用DataTemplateSelector根据行使用不同的单元格,但就是这样。
我建议原生创建此控件。我还要补充一点,我从未见过一个列表中每行有多个单元格的应用程序。我见过大单元格中有大量信息,但连续多个单元格没有。