我尝试使用CollectionView创建自定义操作表,但在自动调整高度时遇到问题。当我将CollectionView插入页面时,它占用了所有可用空间。需要执行什么操作才能使CollectionView的高度根据其元素的高度进行更改?
<?xml version="1.0" encoding="utf-8"?>
<StackLayout
Margin="60, 0">
<CollectionView
BackgroundColor="White"
x:Name="CollectionViewControl">
<CollectionView.Header>
<Label
x:Name="HeaderLabel"
TextTransform="Uppercase"
HorizontalTextAlignment="Center"
FontAttributes="Bold" />
</CollectionView.Header>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="0, 10" x:DataType="modalDialogs:ActionSheetItem">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Name}" />
<Image Grid.Column="1" Source="arrow_down" IsVisible="{Binding IsSelected}" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
<CollectionView.Footer>
<Button
BackgroundColor="Transparent"
TextColor="Green"
Text="Cancel"
HorizontalOptions="End" />
</CollectionView.Footer>
</CollectionView>
</StackLayout>
2条答案
按热度按时间gtlvzcf81#
当我将CollectionView插入页面时,它会占用所有可用空间。要使CollectionView的高度根据其元素的高度而变化,需要执行什么操作?
从Jason的观点来看,Collectionview中的小行,可以给collectionView.HeightRequest设置一个值。当项增加时,高度也会随之增加。
我创建了一个名为. RowHeigth的属性。如果我在CollectionView中添加项(使用AddCommand),RowHeigth将增加。
ViewModelBase是实现INotifyPropertyChanged接口的类。
dw1jzc5e2#
在我的例子中,将BindableLayaout附加到StackLayout是最好的解决方案。https://learn.microsoft.com/en-us/dotnet/maui/user-interface/layouts/bindablelayout