微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Forms中的<ColumnDefinition />是什么,可以用值设置代替吗?

如何解决Xamarin Forms中的<ColumnDefinition />是什么,可以用值设置代替吗?

我有这段代码,我想将ColumnDeFinition转换为使用新语法的第一行。

有人可以在这种情况下向我解释<ColumnDeFinition />的用途:

<Grid Margin="5,5,0" >

    <Grid.ColumnDeFinitions>
        <ColumnDeFinition />
        <ColumnDeFinition Width="50" />
    </Grid.ColumnDeFinitions>

    <Grid.GestureRecognizers>
        <TapGestureRecognizer Tapped="TitleTapped" />
    </Grid.GestureRecognizers>

    <t:FaqTemplate
        HorizontalOptions="Start"
        Text="{Binding Source={x:Reference _accordion_view_123},Path=Title}"
        VerticalOptions="CenterandExpand" />

    <ContentView
        x:Name="_indicatorContainer"
        Grid.Column="1"
        Content="{Binding Source={x:Reference _accordion_view_123},Path=IndicatorView}"
        HorizontalOptions="End"
        VerticalOptions="Start" />
</Grid>

解决方法

使用新语法,它将转换为:

<Grid ColumnDefinitions="*,50">

有关新语法的完整规范,您可以阅读以下内容:https://github.com/microsoft/microsoft-ui-xaml/issues/673

基本上,<ColumnDefinition />相当于<ColumnDefinition Width="*" />*Width属性的默认值)。

列的宽度可以用3种方式表示:

  • Auto表示该列将在可用空间内根据内容自动调整大小
  • 50这样的绝对值,在这种情况下,该列将是50个独立于密度的像素宽
  • *,实际上等效于1**允许您按比例划分可用空间。例如,如果您的A列为1*,B列为3*,则A列将占25%(4之1),B列将占75%(4之3)。

在您的特定情况下,第二列的固定值为50,因此,*50的第一列将占用剩余宽度的100%减去。

您可以在此处查看其他示例:

,

您定义两列,一列的宽度值为50,另一列的默认属性。具有默认属性的是<ColumnDefinition />

查看 Xamarin 101 系列以了解以下内容:

https://www.youtube.com/playlist?list=PLdo4fOcmZ0oU10SXt2W58pu2L0v2dOW-1

这是Microsoft的官方系列文章,也是学习Xamarin的最基本切入点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。