【发布时间】:2021-09-11 21:35:32
【问题描述】:
我有一个这样的集合视图:
<CollectionView ItemsSource="{Binding subCategories}" ItemsLayout="HorizontalGrid, 3" IsVisible="{Binding isCollection}" HeightRequest="250" SelectionMode="Single" SelectionChanged="CollectionView_SelectionChanged" HorizontalOptions="FillAndExpand">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Spacing="8" HorizontalOptions="FillAndExpand">
<Frame BorderColor="LightGray" HasShadow="True" HeightRequest="20" Margin="20" Padding="20">
<Label Text="{Binding name}" TextColor="#02cc9d" FontAttributes="Bold"></Label>
</Frame>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
结果如下:
我在这里尝试做两件事,第一件事是让这个集合视图居中,我已经尝试了 StackLayout 和 CollectionView 上的所有 HorizontalOptions。另一件困扰我的事情是,当一个项目被选中时,显示一个项目被选中的灰色框也没有居中,我该如何修复这个集合视图以使其看起来更好?
【问题讨论】:
-
HorizontalGrid布局是一种根据需要水平增长的布局。水平居中可能很难,因为如果添加更多项目,它准备水平增长。试试ItemsLayout="VerticalGrid, 3"。具有不同的布局选项。 -
重新选择框。 itemtemplate 中
StackLayout的用途是什么? (它无法解决列表级别的任何问题,因为它描述了每个项目中发生的情况。)如果您删除该包装器,将 Frame 直接放在数据模板中,灰色的选择框看起来会有所不同吗? -
StackLayout的目的是增加间距
-
ItemsLayout="VerticalGrid, 3"实际上解决了这两个问题 -
感谢@ToolmakerSteve
标签: c# xamarin.forms