Xaml 将FlexLayout替换为StackLayout
我有一个Xaml 将FlexLayout替换为StackLayout,xaml,xamarin.forms,Xaml,Xamarin.forms,我有一个网格,在集合视图中有两行处于自动状态。其中一个是FlexLayout,另一个是标签。对于一些奇怪的问题,使用这两个控件,标签不会显示,到目前为止,我找到的唯一方法是将FlexLayout替换为StackLayout <DataTemplate> <yummy:PancakeView CornerRadius="15"> <yum
网格
,在集合视图
中有两行处于自动状态。其中一个是FlexLayout
,另一个是标签
。对于一些奇怪的问题,使用这两个控件,标签
不会显示,到目前为止,我找到的唯一方法是将FlexLayout
替换为StackLayout
<DataTemplate>
<yummy:PancakeView CornerRadius="15">
<yummy:PancakeView.Shadow>
<yummy:DropShadow Color="LightBlue" Offset="10,10"/>
</yummy:PancakeView.Shadow>
<Grid BackgroundColor="{DynamicResource SfondoElemDiario}" RowSpacing="0.2">
<Grid.RowDefinitions>
<RowDefinition Height="27"/>
<RowDefinition Height="27"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="65"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="32"/>
</Grid.ColumnDefinitions>
<Image Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Margin="4,4,4,7" Source="{Binding Umore}" VerticalOptions="Center"/>
<Label Grid.Row="0" FontFamily="FontM" Grid.Column="1" Text="{Binding GiornoTrascritto}" FontSize="16" TextColor="{DynamicResource TextColor}" Opacity="0.6" VerticalOptions="Center" />
<Label Grid.Row="1" FontFamily="FontM" Grid.Column="1" Text="{Binding Orario}" FontSize="16" TextColor="{DynamicResource TextColor}" Opacity="0.6" VerticalOptions="Center"/>
<ProgressBar Grid.Row="1" Grid.Column="0" ProgressColor="LightGray" HeightRequest="10" Progress="1" VerticalOptions="End"/>
<ProgressBar Grid.Row="1" Grid.Column="0" ProgressColor="{Binding ColoreUmore}" HeightRequest="10" Progress="{Binding ProgValore}" VerticalOptions="End"/>
<FlexLayout
Grid.Row="2"
Margin="0,5,10,0"
Grid.Column="1"
BindableLayout.ItemsSource="{Binding IconDiaries}"
Wrap="Wrap"
JustifyContent="Start"
Direction="Row"
AlignItems="Start"
AlignContent="Start">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Grid Padding="0,2,3,0">
<Grid.RowDefinitions>
<RowDefinition Height="18"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="18"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<controls:TintedImage Grid.Row="0" Grid.Column="0" Source="{Binding isSource}" Margin="2" TintColor="{Binding ColoreUmore}"/>
<Label Grid.Row="0" Grid.Column="1" FontFamily="FontM" Text="{Binding id}" TextColor="{DynamicResource TextColor}" Opacity="0.9" FontSize="13" VerticalTextAlignment="Center" Margin="0,0,3,0"/>
</Grid>
</DataTemplate>
</BindableLayout.ItemTemplate>
</FlexLayout>
<Label Grid.Row="3" Grid.Column="1" FontFamily="FontM" TextColor="{DynamicResource TextColor}" FontSize="16" Text="{Binding Nota}"/>
有没有办法将此
FlexLayout
转换为StackLayout
,并能够以同样的方式进行可视化?对FlexLayout行使用*
而不是自动
<Grid BackgroundColor="{DynamicResource SfondoElemDiario}" RowSpacing="0.2">
<Grid.RowDefinitions>
<RowDefinition Height="27" />
<RowDefinition Height="27" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- elements -->
</Grid>
否,不能使StackLayout的行为类似于FlexLayout。在我看来,您的标签正在显示,除非它需要包装。我假设这是计算网格单元大小时出现的问题。您是否记录了问题并提交了测试用例?我输入了完整的代码。最后一个标签不显示。如果你试着做一个测试,你会看到它的。我不知道你的意思。你是说FlexLayout之后的标签吗?还是FlexLayout中的标签?您的屏幕截图似乎显示了6个图标和6条文本,因此我假设这意味着您的FlexLayout中有6个元素,并且每个元素都显示了DataTemplate。我指的是最终标签,FlexLayout之后的标签。如果我将行设置为AutoIt works,则不会显示该行!!为什么插入*而不是自动解决了这个问题?这是来自XF repo,FlexLayout的包装内容计算不正确。这里的解决方法很好,因为只有一行需要“*”,这就是FlexLayout。