Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Xamarin表单中将ListView高度设置为5个元素?_Xamarin_Xamarin.forms - Fatal编程技术网

如何在Xamarin表单中将ListView高度设置为5个元素?

如何在Xamarin表单中将ListView高度设置为5个元素?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我有ListView,我想它占据了整整5个元素的高度。如果列表中有2个项目,则按钮处会留有空间。若列表视图有8个项目,用户需要滚动查看其余3个项目。它可能以沙马林的形式存在吗 我试图设置HeightRequest,但我不知道项目的高度。您可以尝试将ListView子类化,并将元素renderheight设置为计算ListView的总高度。我在这里添加了一些类似的代码,这可能会对您有所帮助 public MainPage() { InitializeComp

我有ListView,我想它占据了整整5个元素的高度。如果列表中有2个项目,则按钮处会留有空间。若列表视图有8个项目,用户需要滚动查看其余3个项目。它可能以沙马林的形式存在吗


我试图设置HeightRequest,但我不知道项目的高度。

您可以尝试将ListView子类化,并将元素renderheight设置为计算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);
        }
    }