菜鸟教程小白 发表于 2022-12-13 03:16:40

c# - 将 BoxView 动态添加到网格 [Xamarin.Forms]


                                            <p><p>我正在尝试使用 3 列和多行以网格格式添加 BoxView。我已经使用 xaml 和行为定义了网格
在 c# 文件中。应该发生的是应该为相同数量的图像创建一个 BoxView,每列 3 个图像。</p>

<p>谢谢,</p>

<p>XAML</p>

<pre><code>&lt;Grid RowSpacing=&#34;0&#34; x:Name=&#34;scrollBarGrid&#34;&gt;
    &lt;Grid.RowDefinitions&gt;
      &lt;RowDefinition Height=&#34;50&#34;/&gt;
      &lt;RowDefinition Height=&#34;*&#34;/&gt;
    &lt;/Grid.RowDefinitions&gt;

    &lt;!--Where the search bar will go--&gt;
    &lt;BoxView BackgroundColor=&#34;Aqua&#34; Grid.Row=&#34;0&#34;/&gt;

      &lt;SearchBar &gt;&lt;/SearchBar&gt;   

      &lt;!--Where the images will go--&gt;
    &lt;BoxView BackgroundColor=&#34;Gray&#34; Grid.Row=&#34;1&#34;/&gt;
    &lt;Grid x:Name=&#34;imageGrid&#34; RowSpacing=&#34;0&#34; Grid.Row=&#34;1&#34;&gt;

    &lt;/Grid&gt;

&lt;/Grid&gt;
</code></pre>

<p>C#</p>

<pre><code>public MainPage()
    {
      InitializeComponent();

      int colMaximum = 3;
      int numberOfImages = 15;

      //To add three columns
      for (int i = 0; i &lt; colMaximum; i++)
      {
            imageGrid.ColumnDefinitions.Add(new ColumnDefinition()
            {
                Width = new GridLength(120, GridUnitType.Absolute)
            });
      }

      //To add an array of rows
      imageGrid.RowDefinitions = new RowDefinitionCollection();

      for (int myCount = 0; myCount &lt;= numberOfImages / colMaximum; myCount++)
      {
            imageGrid.RowDefinitions.Add(new RowDefinition()
            {
                Height = new GridLength(120, GridUnitType.Absolute)
            });

            //To add a new box view for each
            for (int newcol = 0; newcol &lt;= colMaximum; newcol++)
            {
                for (int newrow = 0; newrow &lt;= numberOfImages / colMaximum; newrow++)
                {
                  imageGrid.Children.Add(new BoxView() { BackgroundColor = Color.Red });
                }
            }
      }
    }
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>当你将子元素添加到网格时,你必须指定 Row 和 Col,否则它们将被添加到 0,0。</p>

<pre><code>imageGrid.Children.Add(new BoxView() { BackgroundColor = Color.Red }, newrow, newcol);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于c# - 将 BoxView 动态添加到网格 ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47240981/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47240981/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: c# - 将 BoxView 动态添加到网格 [Xamarin.Forms]