如何使 Xamarin ListView 行自动调整大小而不改变屏幕大小?

4

我在我的Xamarin应用程序中有一个ListView,定义如下:

        listView = new ListView
        {
            HorizontalOptions = LayoutOptions.Fill,
            HasUnevenRows = true,
            RowHeight = -1,
            ItemTemplate = new DataTemplate(() =>
            {
                var nameLabel = new Label
                {
                    VerticalOptions = LayoutOptions.Center,
                    HorizontalTextAlignment = TextAlignment.Start
                };
                nameLabel.SetBinding(Label.TextProperty, "DisplayName");

                var statusLabel = new Label 
                {
                    VerticalOptions = LayoutOptions.Center,
                    HorizontalTextAlignment = TextAlignment.End
                };
                statusLabel.SetBinding(Label.TextProperty, "Status");

                var grid = new Grid
                {
                    HorizontalOptions = LayoutOptions.Fill,
                    RowDefinitions = {
                        new RowDefinition { Height = GridLength.Auto }
                    },
                    ColumnDefinitions = {
                        new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) },
                        new ColumnDefinition { Width = GridLength.Auto }
                    }
                };

                grid.Children.Add(nameLabel, 0, 0);
                grid.Children.Add(statusLabel, 1, 0);

                return new ViewCell
                {
                    View = grid
                };
            })
        };

当我第一次设置ItemsSource属性时,行被剪切了,如下图所示:

ListView with clipped rows

如果我调整屏幕大小,它们会被调整为正确的大小:

ListView with resized rows

如果我再次更改ItemsSource,它们又会被剪切。调用UpdateChildrenLayoutForceLayout没有效果。
我该如何让ListView正确调整行的大小,而不必要求用户调整其窗口大小? 这在移动设备上可能很困难!
1个回答

8
如果ListView是全屏的,则将VerticalOptions=FillAndExpand设置为全屏。不要静态设置RowHeight。由于你设置了HasUnevenRows=true,它会根据其内部内容的大小来调整不同行的大小。还应该为listview的ItemTemplate中的控件提供VerticalOptions,以便它们可以被正确地调整大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接