Как настроить определения строк / столбцов в Xamarin.Forms Xaml?

Мне удалось настроить строки и столбцы из кода, но не удалось перенести эти настройки в xaml:

grid.RowDefinitions = new RowDefinitionCollection { 
    new RowDefinition { Height = new GridLength(1, GridUnitType.Star) } 
};
grid.ColumnDefinitions = new ColumnDefinitionCollection { 
    new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) } 
};

Следующее не работает:

<Grid x:Name="grid" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    ...
</Grid>

Из документации мне удалось получить только реализацию C #


person Alexey Strakh    schedule 19.06.2014    source источник
comment
Вы можете определить, что это не работает? Ваш xaml выглядит действительным, и это правильный способ сделать это.   -  person Stephane Delcroix    schedule 20.06.2014
comment
он не предоставляет все пространство экрана для содержимого сетки с row = 0 и col = 0. Вместо этого содержимое перемещается в верхний левый угол формы. Хотя, если я использую определение из кода - если работает, и дает все пространство внутренним элементам управления, которые идут в центр   -  person Alexey Strakh    schedule 20.06.2014
comment
эта штука должна работать. Можете ли вы опубликовать более полный пример, код и xaml того, что вы делаете. Спасибо   -  person Stephane Delcroix    schedule 20.06.2014


Ответы (2)


Я также получаю такое же поведение (не заполняется и не расширяется) для сетки с одной ячейкой (1 строка / столбец, хотя я не уверен, зачем нам когда-либо понадобится сетка с одной ячейкой во весь размер экрана), но это похоже, отлично работает для сетки 2 x 2, 3 x 3 (другие еще не пробовал).

Атрибуты Height = "" и Width = "" требуются в Xamarin Forms, хотя я «думаю», что они не нужны в WPF, поскольку по умолчанию предполагается, что это так.

 <ContentPage.Content>
    <Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
    <Grid.RowDefinitions>
    <RowDefinition Height="*"></RowDefinition>
    <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"></ColumnDefinition>
    <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <Button Grid.Row="0" Grid.Column="0" Text="1"></Button>
    <Button Grid.Row="1" Grid.Column="1" Text="2"></Button>
    </Grid>
</ContentPage.Content>
person WickedW    schedule 21.06.2014

Вот образец

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="*" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
  <Label Text="Top Left" Grid.Row="0" Grid.Column="0" />
  <Label Text="Top Right" Grid.Row="0" Grid.Column="1" />
  <Label Text="Bottom Left" Grid.Row="1" Grid.Column="0" />
  <Label Text="Bottom Right" Grid.Row="1" Grid.Column="1" />
</Grid>
person Shyju M    schedule 28.09.2017