我有这段代码:
<ViewCell x:Name="ss">
<Grid VerticalOptions="CenterAndExpand" Padding="20, 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<local:LabelBodyRendererClass Grid.Column="0" HorizontalOptions="StartAndExpand" Text="Show Subcategory" />
<Switch x:Name="ssSwitch" Grid.Column="1" Toggled="SsSwitch" VerticalOptions="Center" HorizontalOptions="End" />
</Grid>
</ViewCell>
我发现删除列定义时它仍能正常工作:
<ViewCell x:Name="ss">
<Grid VerticalOptions="CenterAndExpand" Padding="20, 0">
<local:LabelBodyRendererClass Grid.Column="0" HorizontalOptions="StartAndExpand" Text="Show Subcategory" />
<Switch x:Name="ssSwitch" Grid.Column="1" Toggled="SsSwitch" VerticalOptions="Center" HorizontalOptions="End" />
</Grid>
</ViewCell>
因此,对于像这样的简单案例,他们需要。到目前为止,我只能在iOS模拟器中看到。我不确定它何时部署。
答案 0 :(得分:2)
据我所知,如果你想要多个列或行,你需要定义它们。我在文档中找不到任何其他内容。即使Xamarin.Forms会自动为您生成列(或行),它也将始终具有默认的宽度或高度设置,即Auto。如果您想对它们的布局方式有任何控制,您必须自己添加定义并指定宽度和高度。
您可以自己轻松测试,就像您说过的那样。如果您想确定,请创建一些场景,尝试在不定义列的情况下展开列或行。
答案 1 :(得分:1)
只有在每列需要特定值时才需要指定ColumnDefinition。否则,每列将平均分配行的宽度。