Начну говоря, что это спорная тема.
Мой личный подход - вы должны определить значительно разные диапазоны разрешений/размеров и предоставить другой уровень пользовательского интерфейса, который вы можете менять, когда вы обнаруживаете изменение размера, которое идет от одного диапазона к другому (динамическое переключение может даже не требоваться для вы - в этом случае вы просто проверяете время загрузки). Этот подход, очевидно, не имеет смысла, если диапазоны, которые вы идентифицируете, очень ограничены и похожи друг на друга, так как в пределах того же диапазона ваше приложение должно иметь возможность изменять размер порядочно.
Попытка решить все возможные разрешения с одним и тем же слоем интерфейса может показаться отличной идеей, но это может быть рецепт катастрофы. Вы можете заставить его работать, но вы, скорее всего, окажетесь в виде шарика с цепочкой команд IF-ELSE и SWITCH, которые будут смотреть на размеры пикселей, изменять размеры элементов управления и перемещать вещи вокруг.
Если вы думаете об этом, Google Maps (на первый взгляд, но думайте о любом приложении для iPhone) не поддерживает один и тот же интерфейс на мобильном устройстве и в браузере вашего рабочего стола и т. Д. Если это разница в размерах, о которых мы говорим (мобильные разрешения для рабочего стола на основе VS), вам придется переливать разные слои пользовательского интерфейса согласно моему предложению выше.
Святой Грааль - это так называемая жидкая компоновка - WPF может помочь в этом, но поскольку вы находитесь на компактном каркасе, это исключено.
Недавно я задал очень похожий вопрос - вы можете взглянуть на него here if you wanna read different opinions.
+1 для этого. Попытка справиться с изменениями ориентации и разрешения в коде путем перемещения и изменения размера - это кошмар. Намного проще просто настроить интерфейс и создать реализаций на основе запрошенного разрешения экрана. – ctacke