2017-04-13 50 views
0

我有ListView,我希望它占据了5个元素的高度。如果列表中有2个项目,则按钮上会留下空间。如果列表视图有8个项目,用户需要滚动查看其余3个项目。 Xamarin Forms中可能吗?如何将ListView Height设置为Xamarin Forms中的5个元素?

我试着设置HeightRequest,但我不知道物品的高度。

回答

1

你可以尝试子类化ListView并设置Element renderheight来计算总的列表视图高度。我在这里添加了一些类似的代码,可以帮助你。

public MainPage() 
     { 
      InitializeComponent(); 
      BindingContext = new MainViewModel(); 
      BackgroundColor = Color.Silver; 
      userListView = new ClistView(); 
      userListView.BackgroundColor = Color.Olive; 
      userListView.VerticalOptions = LayoutOptions.Start; 
      userListView.ItemsSource = (BindingContext as MainViewModel).Items; 
      userListView.SizeChanged += VisualElement_OnSizeChanged; 
      userListView.RowHeight = 80; 
      Content = userListView; 
     } 

     private void VisualElement_OnSizeChanged(object sender, EventArgs e) 
     { 
      if (userListView.HeightRequest < 0) 
       userListView.HeightRequest = userListView.ElementHeight * 5; 
     } 

CListView中 - CustomListView

public class ClistView : ListView 
    { 
     public double ElementHeight { get; set; } 

     protected override void SetupContent(Cell content, int index) 
     { 
      if (ElementHeight <= 0 && RowHeight <= 0) 
       ElementHeight = content.RenderHeight; 
      else 
       ElementHeight = RowHeight; 
      base.SetupContent(content, index); 
     } 
    } 

Final Image

相关问题