我尝试使用VerticalStackLayout让UI在将控件设置为可见/不可见时自动调整(展开/折叠)。我还没有找到在网格中实现这一点的方法(如果可能的话)。
VerticalStackLayout的问题是其中的CollectionView无法卷动。另一个需求是页面不应该整体卷动。只有部分页面应该卷动。在这个范例中,CollectionView。
周围有网格,它工作得很好。集合视图滚动,而UI的其余部分保持固定。
<ContentPage>
<Grid RowDefinitions="50,*">
<Button Grid.Row="0" />
<CollectionView />
</Grid>
</ContentPage>
这样做的问题是,当按钮设置为不可见时,由于行是固定的,因此会有一个空白空间。
类似<Grid RowDefinitions="*,*">
的代码也不起作用,因为它只影响行的分布方式,而不影响行是否折叠。
下一个构造对于折叠部分工作得很好。当按钮不可见时,空间会自动填充以下元素。但是集合视图不会滚动,因此不是集合视图中的所有项都可见。
<ContentPage>
<VerticalStackLayout>
<Button />
<CollectionView />
</VerticalStackLayout>
</ContentPage>
如何将滚动和折叠这两个功能结合起来?
我也试过FlexLayout
<FlexLayout Direction="Column"
AlignItems="Center"
JustifyContent="Start">
<Button />
<CollectionView />
</FlexLayout>
但这似乎总是使用整个页面,因此如果元素不适合,就会挤压它们。如果我将CollectionView设置为HeightRequest="100"
,那么我会得到想要的结果,除了CollectionView不再一直到底部,而是在屏幕中间被剪切掉。
一些文章中建议的表示百分比的HeightRequest="0.9*"
似乎不适用于.NET MAUI。
我已经研究了这里的文档https://learn.microsoft.com/en-us/dotnet/maui/user-interface/layouts/flexlayout,但我还没有找到我的问题的答案。
1条答案
按热度按时间qmb5sa221#
CollectionView本身就是一个scrollView。因此,如果我们在另一个scrollView中包含一个scrollView,这可能会导致不期望的行为和用户正确使用它的复杂性。您可以重新组织代码的层次结构,并使用标题或补充视图。
在这里,我们可以将
CollectionView.Header
添加到CollectionView
来实现这一点。您可以参考下面的代码,它在我这边工作正常。如果是的话,能不能分享一下你的xaml,让我重现一下?
你可以参考下面我使用的代码: