0
發現奇怪的是,我沒有看到任何其他SO或文檔,但我想知道是否有可能爲每行多個單元格創建一個Xamarin Forms Listview(回收緩存策略,如果這樣做有所不同)?現在我們有了列表視圖,該視圖只顯示寬度爲300的圖像(每邊填充10個以使其居中)。這在iPhone上非常適用,但在iPad上它看起來有點兒空白,它有一定的空白空間(正如你可以想象的那樣,iPad上只有一個300像素的圖像)。有什麼辦法讓listview包含多個單元行?特別是,如果它可以是一個變量。因此,對肖像也可以是2,景觀也可以是3每個ListView行的多個單元格?
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;
你的意思是一個WrapPanel? http://www.spikie.be/blog/post/2015/04/02/.aspx – Depechie
嗯,不,我的意思是一個列表視圖。我想知道這是否可能。也許不是。儘管如此,我非常感謝你的分享。 – jdmdevdotnet
確實... listview不會迎合這個。因此你需要恢復到另一個控制。 – Depechie