Xamarin.Forms:以编程方式将子项添加到网格的某些列

Posted

技术标签:

【中文标题】Xamarin.Forms:以编程方式将子项添加到网格的某些列【英文标题】:Xamarin.Forms: Add Children programmatically to certain column of grid 【发布时间】:2020-04-19 12:55:33 【问题描述】:

我有一个简单的网格:

                <Grid Grid.Row="5" x:Name="row5_piccat">
                    <Grid.ColumnDefinitions >
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="4*" />
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>

                    <ImageButton
                         Aspect="AspectFit"
                         x:Name="btn_dummy_piccat2"
                         Grid.Column="1"
                         Source="btn_emptydummy.png" BackgroundColor="#00000000"/>

                    <Entry x:Name="entry_descri_pickcate" 
                            Grid.Column="1"
                            FontFamily="arial"
                           MaxLength="50"
                           Placeholder="Kurzbeschreibung" 
                            BackgroundColor="#00000000"
                            TextColor="#272727"
                            HorizontalOptions="Center" 
                            VerticalOptions="Center">
                    </Entry>

                </Grid>

现在,如您所见,此网格内有布局,在第 1 列。

现在我想用红色框以编程方式交换该网格的内容:

private void SetLayoutForTakers()

    btn_dummy_piccat2.IsVisible = false;
    entry_descri_pickcate.IsVisible = false;

    Grid grid = new Grid(); //Neues Grid
    BoxView bx = new BoxView();

    bx.Color = Xamarin.Forms.Color.Red;

    grid.Children.Add(bx);
    row5_piccat.Children.Add(grid);

但是红色框总是设置在第一列而不是第二列(这里是数字 1,因为它是基于 0 的)。

如何处理已存在图像按钮和条目的特定列,禁用它们(已完成)并仅在此列中显示一个红色框? (第 0 行,第 1 列)?

谢谢你:)

【问题讨论】:

【参考方案1】:

Grid.Children.Add 有一个重载,可让您指定行和列

myGrid.Children.Remove(oldView);
myGrid.Children.Add(newView,row,col);

【讨论】:

以上是关于Xamarin.Forms:以编程方式将子项添加到网格的某些列的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式从Xamarin.Forms ScrollView中删除内容?

xamarin.forms以编程方式将行高设置为0会导致不需要的空间

如何访问 Xamarin.Forms 中以编程方式创建的 UI 元素:timepicker

我可以以编程方式更改 Xamarin.Forms 中的 styles.xml 吗?

Xamarin Forms StackLayout:如何将子项的宽度/高度设置为百分比

将按钮添加到标题栏 Xamarin Forms