2017-01-10 102 views
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; 
+0

你的意思是一個WrapPanel? http://www.spikie.be/blog/post/2015/04/02/.aspx – Depechie

+0

嗯,不,我的意思是一個列表視圖。我想知道這是否可能。也許不是。儘管如此,我非常感謝你的分享。 – jdmdevdotnet

+0

確實... listview不會迎合這個。因此你需要恢復到另一個控制。 – Depechie

回答

0

Xamarin.Forms.ListView不支持每行有多個單元格。您可以使用DataTemplateSelector根據行使用不同的單元格,但就是這樣。

我建議本地創建這個控件。我還會補充說,我從來沒有見過一個應用程序的列表中有多個單元格。我已經看到大單元中有很多信息,但沒有連續多個單元。

相關問題