Xaml 如何(在何处)获得实际的ColumnDefinition Width="*&引用;

Xaml 如何(在何处)获得实际的ColumnDefinition Width="*&引用;,xaml,xamarin.forms,Xaml,Xamarin.forms,我试图完成的简短版本。 有一个带按钮的可滚动网格。 按下按钮后,将两个按钮插入现有行内容的右侧,并水平向左滚动内容,以便插入布局的第二个按钮的右边缘与屏幕的右边缘对齐 描述尝试的解决方案和遇到的问题的较长版本: 我有一个自定义控件(scrollview中的网格)用于ListView中的一行。 通常,该网格与设备的宽度相同 这个节目的明星是

我试图完成的简短版本。 有一个带按钮的可滚动网格。 按下按钮后,将两个按钮插入现有行内容的右侧,并水平向左滚动内容,以便插入布局的第二个按钮的右边缘与屏幕的右边缘对齐

描述尝试的解决方案和遇到的问题的较长版本:

我有一个自定义控件(scrollview中的网格)用于ListView中的一行。 通常,该网格与设备的宽度相同

这个节目的明星是
稍后在xaml中分配给该列
网格中删除和块按钮的最后两列的宽度最初为零

<ColumnDefinition Width="0" x:Name="cdDelete"/>
<ColumnDefinition Width="0" x:Name="cdBlock"/>

因此,未显示(使承载标签的*列大小适当,因为除标签外,网格中还存在缩略图、按钮和间隔列)

在这两个选项之前,有一列按钮用于更改 列宽度,并在scrollview中滚动展开的网格

所以我需要一些方法来替换ColumnDefinition“*”的gridLength 我运行的设备的实际列宽度

            this.cdBlock.Width = this.cdDelete.Width = Metrics.ThumbnailDiameter;
            if (starwidth <= 0)
            {
                starwidth = this.IDLabel.Width;
                       ^^^^^^^^^^^^^^^^^^^^^^^^^ problem is here: this returns the width the label fits into, not the actual width of the label highlighted (see red background above)
            }
            this.Star.Width = new GridLength(starwidth);
this.cdBlock.Width=this.cdDelete.Width=Metrics.ThumbnailDiameter;

if(starwidth似乎可以使用ViewCell.ContextActions来利用 平台表编辑功能

这意味着必须关闭显示删除/阻止按钮的按钮 除非有办法以编程方式显示contextactions的按钮

            this.cdBlock.Width = this.cdDelete.Width = Metrics.ThumbnailDiameter;
            if (starwidth <= 0)
            {
                starwidth = this.IDLabel.Width;
                       ^^^^^^^^^^^^^^^^^^^^^^^^^ problem is here: this returns the width the label fits into, not the actual width of the label highlighted (see red background above)
            }
            this.Star.Width = new GridLength(starwidth);