xamarin.forms - 用固定大小的单元格填充屏幕
问题描述
我正在尝试为我的 Xamarin.Forms 应用程序实现启动器屏幕。因此,它包含几个Grid
图标按钮,每个网格都在一个CarouselView
窗格中。图标按钮单元格将具有固定大小。
通常,我会使用已知的行数和列数来调整网格的大小,并相应地计算单元格大小。在这里,我需要采取相反的方向,从已知的单元格大小到计算的行数和列数。我看的越多,我似乎就越需要在 Xamarin.Forms 中创建自定义布局,在那里我看到了诸如使用VisualElement.Measure来确定子元素的父元素大小之类的东西。
不过,在我追逐该选项之前,有没有人知道我是否/如何Grid
在渲染之前获得一个可以包含的固定大小单元的数量?
解决方案
经过一番摆弄,我想我已经确定了一个可行的设计。最终实际上使用 aCollectionView
而不是 a Grid
:
<CarouselView
ItemsSource="{Binding LauncherPanes}"
Loop="False">
<CarouselView.ItemTemplate>
<DataTemplate x:DataType="models:LauncherPaneViewModel">
<CollectionView
ItemsSource="{Binding Items}"
ItemSizingStrategy="MeasureFirstItem">
<CollectionView.ItemsLayout>
<GridItemsLayout
Orientation="Vertical"
Span="4" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:LauncherIconViewModel">
<controls:LauncherIconView />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
这仍然要求我不要在轮播的每个窗格中填充超过窗格可以容纳的图标,尽管从技术上讲,即使我这样做了,它CollectionView
只会在窗格内垂直滚动。
推荐阅读
- android - React-navigation 在发布 apk 中不起作用
- iis - 不要终止 IIS 上的应用程序
- angular - NgrxData,如何在 DefaultDataService 中添加除默认函数之外的自定义函数
- html - CSS:只允许容器以增量方式增长
- algorithm - Traveling salesman problem when not all cities are connected and with the possibility of multiple visits
- django - 如何在表单小部件模板中使用 sekizai 的 addtoblock 标签
- node.js - 缺少护照注册/登录凭证
- html - 为什么将标签的已访问伪类应用于未访问的链接?
- django - Django 社交身份验证使用自定义模型创建新用户
- html - 简单的 z-index 示例不起作用 - 仍然是错误的顺序