在将Xamarin.iOS更新到最新版本后,我意识到将CollectionView放入StackLayout和VerticalOptions = FillAndExpand会导致它占用无限的垂直空间,并最终排除iOS和MacCatalyst上放置的任何其他控件。如果我尝试删除FillAndExpand选项,它将占用预期的空间,但不会滚动到末尾。我怎样才能实现正确的行为保持下面的控件定位?
CollectionView
StackLayout
VerticalOptions = FillAndExpand
FillAndExpand
llew8vvj1#
*AndExpand
此外,*AndExpand选项从未应用于 StackLayout 以外的任何其他布局。它们在Xamarin.Forms和.NET MAUI中的 Grid、RelativeLayout 或 AbsoluteLayout 中没有任何效果。如果你需要一个项目来填充定义的空间,你应该使用 Grid,然后设置VerticalOptions="Fill":
VerticalOptions="Fill"
<Grid RowDefinitions="*" HeightRequest="300"> <CollectionView Grid.Row="0" VerticalOptions="Fill" ItemsSource="{Binding MyItems}" /> </Grid>
这将创建一个具有特定高度和单行的 Grid,占用 Grid 的所有可用空间。然后,放置在 Grid 中的 CollectionView 将填充其父级提供的可用空间。
***重要提示:**当Grid具有其VerticalOptions="Fill"而不是定义固定的HeightRequest时,这也有效,但是,请确保它不包含在可滚动视图(如 ScrollView)中,因为在这种情况下,可用空间几乎是无限的。
HeightRequest
vulvrdjw2#
为了使CollectionView的尺寸正确,并防止它在iOS上占用太多的垂直空间(并最终排除下面的所有控件),它需要嵌套到Grid和VerticalOptions = FillAndExpand中。这将使CollectionView滚动到最后,也将允许下面的任何其他控件按预期显示在View中。
Grid
View
2条答案
按热度按时间llew8vvj1#
FillAndExpand
is deprecated in MAUI。所有其他*AndExpand
变体也是如此。它们在Xamarin.Forms中很流行,但最终在. NETMAUI中不再起作用,因此应该尽可能避免。此外,
*AndExpand
选项从未应用于 StackLayout 以外的任何其他布局。它们在Xamarin.Forms和.NET MAUI中的 Grid、RelativeLayout 或 AbsoluteLayout 中没有任何效果。如果你需要一个项目来填充定义的空间,你应该使用 Grid,然后设置
VerticalOptions="Fill"
:这将创建一个具有特定高度和单行的 Grid,占用 Grid 的所有可用空间。然后,放置在 Grid 中的 CollectionView 将填充其父级提供的可用空间。
***重要提示:**当Grid具有其
VerticalOptions="Fill"
而不是定义固定的HeightRequest
时,这也有效,但是,请确保它不包含在可滚动视图(如 ScrollView)中,因为在这种情况下,可用空间几乎是无限的。vulvrdjw2#
为了使
CollectionView
的尺寸正确,并防止它在iOS上占用太多的垂直空间(并最终排除下面的所有控件),它需要嵌套到Grid
和VerticalOptions = FillAndExpand
中。这将使CollectionView
滚动到最后,也将允许下面的任何其他控件按预期显示在View
中。