包含按行和列排列的檢視的佈局。

StackOverflow 文件

這是 XAML 中典型的 Grid 定義。

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="2*" />
    <RowDefinition Height="*" />
    <RowDefinition Height="200" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
    
  <ContentView Grid.Row="0" Grid.Column="0"/>
  <ContentView Grid.Row="1" Grid.Column="0"/>
  <ContentView Grid.Row="2" Grid.Column="0"/>

  <ContentView Grid.Row="0" Grid.Column="1"/>
  <ContentView Grid.Row="1" Grid.Column="1"/>
  <ContentView Grid.Row="2" Grid.Column="1"/>

</Grid>

程式碼中定義的相同 Grid 如下所示:

var grid = new Grid();
grid.RowDefinitions.Add (new RowDefinition { Height = new GridLength(2, GridUnitType.Star) });
grid.RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Star) });
grid.RowDefinitions.Add (new RowDefinition { Height = new GridLength(200)});
grid.ColumnDefinitions.Add (new ColumnDefinition{ Width = new GridLength (200) });

要向網格新增專案:在 XAML 中:

<Grid>
      
   <--DEFINITIONS...--!>
        
   <ContentView Grid.Row="0" Grid.Column="0"/>
   <ContentView Grid.Row="1" Grid.Column="0"/>
   <ContentView Grid.Row="2" Grid.Column="0"/>

   <ContentView Grid.Row="0" Grid.Column="1"/>
   <ContentView Grid.Row="1" Grid.Column="1"/>
   <ContentView Grid.Row="2" Grid.Column="1"/>

</Grid>

在 C#程式碼中:

var grid = new Grid();
//DEFINITIONS...
var topLeft = new Label { Text = "Top Left" };
var topRight = new Label { Text = "Top Right" };
var bottomLeft = new Label { Text = "Bottom Left" };
var bottomRight = new Label { Text = "Bottom Right" };
grid.Children.Add(topLeft, 0, 0);
grid.Children.Add(topRight, 0, 1);
grid.Children.Add(bottomLeft, 1, 0);
grid.Children.Add(bottomRight, 1, 1);

對於 HeightWidth,有許多單位可供選擇。

  • 自動 - 自動調整大小以適合行或列中的內容。在 C#中指定為 GridUnitType.Auto 或在 XAML 中指定為 Auto。
  • 比例 - 將列和行的大小作為剩餘空間的比例。在 C#中指定為值和 GridUnitType.Star,在 XAML 中指定為#*,其中#是你想要的值。使用*指定一行/列將使其填充可用空間。
  • 絕對 - 使用特定的固定高度和寬度值來定義列和行。在 C#中指定為值和 GridUnitType.Absolute,在 XAML 中指定為#,其中#是你想要的值。

注意: 預設情況下,Xamarin.Forms 中列的寬度值設定為自動,這意味著寬度由子項的大小確定。請注意,這與 Microsoft 平臺上的 XAML 實現不同,預設寬度為*,這將填充可用空間。