2017-11-11 31 views
1

BoxViewsを3列と複数行を使用してGrid形式で追加しようとしています。私はxamlを使ってグリッドを定義し、C#ファイルには という振る舞いを定義しています。何が起こるべきかは、BoxViewが列当たり3つの画像を持つ同じ数の画像に対して作成されるべきであるということです。BoxViewsを動的にGridに追加する[Xamarin.Forms]

おかげで、

XAML

<Grid RowSpacing="0" x:Name="scrollBarGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="50"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <!--Where the search bar will go--> 
    <BoxView BackgroundColor="Aqua" Grid.Row="0"/> 

     <SearchBar ></SearchBar>  

     <!--Where the images will go--> 
    <BoxView BackgroundColor="Gray" Grid.Row="1"/> 
    <Grid x:Name="imageGrid" RowSpacing="0" Grid.Row="1"> 

    </Grid> 

</Grid> 

C#

public MainPage() 
    { 
     InitializeComponent(); 

     int colMaximum = 3; 
     int numberOfImages = 15; 

     //To add three columns 
     for (int i = 0; i < 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 <= 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 <= colMaximum; newcol++) 
      { 
       for (int newrow = 0; newrow <= numberOfImages/colMaximum; newrow++) 
       { 
        imageGrid.Children.Add(new BoxView() { BackgroundColor = Color.Red }); 
       } 
      } 
     } 
    } 
+0

コードには何が問題なのですか?何をしていない、または間違っている? – Jason

+0

こんにちはJason、私がしたいのは、変数 'numberOfImages'(15など)と同じ量のボックスを印刷することです。私はページがグリッド形式で表示する必要があるイメージの量を読み込むInstagramのようなUIを作成しようとしています。万が一、これを達成するより良い方法を知っていますか、ありがとう。 – Noel625

+0

要件を伝えていますが、コードは実際に何をしていますか?エラーや例外はありますか?間違った数の項目を印刷しますか?それはまったく何もしませんか? – Jason

答えて

0

あなたがグリッドに子を追加すると、あなたはそれ以外の場合は0で追加され、行とコルを指定する必要があります、0。

imageGrid.Children.Add(new BoxView() { BackgroundColor = Color.Red }, newrow, newcol); 
関連する問題