2017-11-11 3 views
1

3 열과 여러 행을 사용하여 GridView 형식으로 BoxViews를 추가하려고합니다. 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

안녕하세요 제이슨, 내가 원하는 것은 'numberOfImages'변수 (15 개)와 같은 양의 상자를 인쇄하는 것입니다. 페이지가 그리드 형식으로 표시해야하는 이미지의 양을 읽을 Instagram과 같은 UI를 만들려고합니다. 어쨌든, 이것을 성취 할 수있는 더 좋은 방법을 아시겠습니까? 감사합니다. – Noel625

+0

요구 사항을 말하고 있지만 실제로 코드가 무엇입니까? 오류 또는 예외가 발생합니까? 잘못된 수의 항목이 인쇄됩니까? 전혀 아무것도합니까? – Jason

답변

0

당신이 그리드에 자녀를 추가 할 때, 당신은 그렇지 않으면 0에 추가됩니다, 행과 골을 지정해야 , 0.

imageGrid.Children.Add(new BoxView() { BackgroundColor = Color.Red }, newrow, newcol);