#grid #xamarin #xamarin.forms
#сетка #xamarin #xamarin.forms
Вопрос:
Мне удалось настроить строки и столбцы из кода, но не удалось перенести эти настройки в 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 #
Комментарии:
1. Можете ли вы определить «это не работает»? Ваш xaml выглядит корректно, и это правильный способ сделать это.
2. это не дает всего пространства экрана для содержимого сетки с row = 0 и col = 0 . Поскольку вместо этого содержимое смещается в верхний левый угол формы. Хотя, если я использую определение из code — if, оно работает, и оно предоставляет все пространство для внутренних элементов управления, которые идут в центр
3. эта вещь должна работать. можете ли вы опубликовать более полный пример, код и xaml того, что вы делаете. спасибо
Ответ №1:
Я также получаю такое же поведение (не заполняется и не расширяется) для сетки с одной ячейкой (1 строка / столбец, хотя я не уверен, зачем нам вообще нужна сетка с одной ячейкой во весь экран), но, похоже, она отлично работает для 2 x 2,сетка размером 3 x 3 ячейки (другие еще не пробовали).
Атрибуты Height =»» и Width =»» требуются в формах Xamarin, хотя я «думаю», что они не нужны в 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>
Ответ №2:
Вот пример
<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>