2017-04-13 4 views
0

ListView를 가지고 있으며 정확히 5 개의 요소에 대해 높이를 차지하고 싶습니다. 목록에 2 개의 항목이 있으면 버튼에 남아있는 공간이 있습니다. 목록보기에 8 개의 항목이 있으면 나머지 3 개의 항목을 보려면 스크롤해야합니다. Xamarin Forms에서도 가능합니까?Xamarin Forms에서 ListView Height를 5 개의 요소로 설정하는 방법은 무엇입니까?

HeightRequest를 설정하려고했지만 항목 높이를 알지 못합니다.

답변

1

ListView를 하위 클래스로 만들고 요소 렌더링 높이를 설정하여 전체 목록 뷰 높이를 계산할 수 있습니다. 비슷한 코드를 추가하면 도움이 될 것입니다.

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

관련 문제