Xamarin.forms Xamarin中的砌石列表样式

Xamarin.forms Xamarin中的砌石列表样式,xamarin.forms,scrollview,stacklayout,Xamarin.forms,Scrollview,Stacklayout,我需要在内容页上列出公告,就像砖石风格()一样,但我无法成功。我的问题是,当我使用父Stacklayout的垂直对齐选项设置为FillAndExpand时,Scrollview不能覆盖整个页面。但如果我将Scrollview和父StackLayout设置为静态高度值,这没关系,但由于每个项目的高度将发生变化,我不能使用它,正如您所猜测的那样 public主页() { 初始化组件(); var列表=新的ObservableCollection GitHub链接; =============

我需要在内容页上列出公告,就像砖石风格()一样,但我无法成功。我的问题是,当我使用父Stacklayout的垂直对齐选项设置为FillAndExpand时,Scrollview不能覆盖整个页面。但如果我将Scrollview和父StackLayout设置为静态高度值,这没关系,但由于每个项目的高度将发生变化,我不能使用它,正如您所猜测的那样


public主页()
{
初始化组件();
var列表=新的ObservableCollection

GitHub链接;

======================更新=================

柔性布局; 如何将绿色框设置为顶部

<FlexLayout Direction="Row" Wrap="Wrap" AlignContent="Start"
                                JustifyContent="Start" AlignItems="Start">

                        <Frame BackgroundColor="Red" Margin="4,4">
                            <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Blue" Margin="4,4">
                             <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Green" Margin="4,4" FlexLayout.Grow="1">
                             <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Yellow" Margin="4,4" FlexLayout.Grow="1">
                             <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

    </FlexLayout>


请在您的帖子中包含相关代码-不要只是链接到外部回购,并期望有人花费宝贵的时间阅读您的所有代码,以帮助您我不能像您所说的那样思考,我已经更新了。谢谢您的通知。@Erdogan您可以尝试使用FlexLayout做砌体样式:@CherryBu MSFT,我已经更新我的问题,请看问题末尾关于Flex布局的第二个问题。那么,我如何将绿色框设置到顶部?恐怕到目前为止它仍然不可用。我已经发布了一个功能请求,并将告诉您是否有任何更新。请在您的帖子中包含相关代码-不要只链接到外部回购和exp请某人花宝贵的时间阅读您的所有代码,以帮助您。我不能像您所说的那样思考,我已经更新了。谢谢您的通知。@Erdogan您可以尝试使用FlexLayout做砖石风格:@CherryBu MSFT,我已经更新了我的问题,请参阅问题末尾关于Flex Layout的第二个问题。那么,如何更新我可以将绿色框设置到顶部吗?恐怕到目前为止它仍然不可用。我已经发布了一个功能请求,并将告诉您是否有任何更新。
public MainPage()
        {
            InitializeComponent();

            var list = new ObservableCollection<Announcement>
            {
                new Announcement
                {
                    ID = 1,
                    Title = "Yedek parça siparişlerinizde %22' ye varan indirim!",
                    ImagePath = "https://image5.sahibinden.com/photos/08/54/18/x5_719085418j7p.jpg",
                    IsActive = true,
                    CreateDate = DateTime.Now,
                },
                new Announcement
                {
                    ID = 2,
                    Title = "Fren Balataları Hangi Sıklıkla Değiştirilmelidir?",
                    ImagePath = "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTJzQfduSrJ3Nh7SHzGSGrCmTnWses4AcfuRSnU7hX4y9XN4TSU&usqp=CAU",
                    IsActive = true,
                    CreateDate = DateTime.Now,
                }
            };

            DeviceHelper helper = DependencyService.Get<IDeviceHelper>().GetDevice();

            double height = 0;

            for (int m = 0; m < 6; m++)
            {
                for (int i = 0; i < list.Count; i++)
                {

                    Frame frame = new Frame
                    {
                        Padding = new Thickness(0, 0, 0, 0)
                    };

                    // Stack
                    StackLayout stack = new StackLayout
                    {
                        Margin = new Thickness(10),
                    };

                    // Image
                    Image image = new Image
                    {
                        Source = list[i].ImagePath,
                        HorizontalOptions = LayoutOptions.FillAndExpand,
                        VerticalOptions = LayoutOptions.FillAndExpand
                    };

                    // Title
                    Label title = new Label
                    {
                        Text = list[i].Title,
                        Margin = new Thickness(0, 6, 0, 0),
                        FontSize = 13
                    };

                    // Date
                    Label date = new Label
                    {
                        Text = list[i].CreateDate.ToString().Substring(0, 10), // temporary workaround
                        Margin = new Thickness(0, 6, 0, 0),
                        TextColor = Color.Gray,
                        FontSize = 11
                    };

                    stack.Children.Add(image);
                    stack.Children.Add(title);
                    stack.Children.Add(date);

                    frame.Content = stack;


                    if (i % 2 == 0)
                    {
                        stckLeft.Children.Add(frame);
                    }
                    else
                    {
                        stckRight.Children.Add(frame);

                        SizeRequest columnSizeRequest = frame.Measure(600, 800);
                        height += columnSizeRequest.Request.Height * 6;
                    }
                }
            }
            stckLeft.HeightRequest = height;
            stckRight.HeightRequest = height;

            scrList.HeightRequest = helper.ScreenHeight - 100;

        }
<FlexLayout Direction="Row" Wrap="Wrap" AlignContent="Start"
                                JustifyContent="Start" AlignItems="Start">

                        <Frame BackgroundColor="Red" Margin="4,4">
                            <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Blue" Margin="4,4">
                             <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Green" Margin="4,4" FlexLayout.Grow="1">
                             <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

                        <Frame BackgroundColor="Yellow" Margin="4,4" FlexLayout.Grow="1">
                             <StackLayout WidthRequest="140">
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                                <Label Margin="0,10" Text="Deneme"/>
                            </StackLayout>
                        </Frame>

    </FlexLayout>