У меня проблема с изменением размера сетки на iPhone. Я подписался на событие SizeChanged, которое возникает, когда я поворачиваю устройство. Вот методы, которые я использую для изменения размера сетки:
private void MainMenu_SizeChanged(object sender, EventArgs e)
{
if (Width > Height)
{
ImageSunLogo.Margin = 0;
GridMenuItems = ChangeGridOrientation(GridMenuItems, 2, 3);
}
if (Height > Width)
{
ImageSunLogo.Margin = 20;
GridMenuItems = ChangeGridOrientation(GridMenuItems, 3, 2);
}
}
private Grid ChangeGridOrientation(Grid gridParent, int nOfRows, int nOfColumns)
{
var resultGrid = gridParent;
var parentChilds = gridParent.Children.ToList();
ClearGridRowsColsChilds(ref resultGrid);
for (int i = 0; i < nOfRows; i++)
{
resultGrid.RowDefinitions.Add(new RowDefinition());
}
for (int i = 0; i < nOfColumns; i++)
{
resultGrid.ColumnDefinitions.Add(new ColumnDefinition());
}
int currentChildIndex = 0;
for (int row = 0; row < nOfRows; row++)
{
for (int col = 0; col < nOfColumns; col++)
{
resultGrid.Children.Add(parentChilds[currentChildIndex], col, row);
currentChildIndex++;
}
}
return resultGrid;
}
private void ClearGridRowsColsChilds(ref Grid grid)
{
GridMenuItems.Children.Clear();
GridMenuItems.RowDefinitions.Clear();
GridMenuItems.ColumnDefinitions.Clear();
}
Этот код отлично работает на устройствах Android, iPad, но на iPhone при изменении ориентации с книжной на альбомную путем поворота телефона влево (вправо работает нормально), приложение не вызывает это событие, и сетка не переворачивается. Кто-нибудь испытал что-то подобное?