Проблемы макета пользовательского интерфейса XAML

Я только недавно получил Windows 10 и Visual Studio 2015 и решил попробовать научиться создавать универсальные приложения. Я просмотрел руководства Microsoft для универсальных приложений как для Windows 10, так и для Windows 8, но в них, похоже, ничего не упоминается.

Первая проблема, которую я заметил при тестировании приложения HelloWorld, заключается в том, что, если я изменяю размер StackPanel, уменьшая его размеры и вмещая его вокруг элементов, которые он содержит, до определенного момента он покрывает элементы во время выполнения, несмотря на то, что граница StackPanel делает не пересекать ничего.

Другая проблема (частично связанная с проблемой StackPanel) связана с размещением предметов. Во всей работе с графическим интерфейсом, размещение элементов никогда не казалось проблемой. Если бы мне нужно было работать с правой стороны интерфейса или центрировать что-то в маленьком окне, я мог бы это сделать. В целом, кажется, что размещение элементов в окнах дизайна .xaml не отражает их внешний вид во время выполнения. Если я попытаюсь центрировать содержимое HelloWorld StackPanel (с измененным или нет измененным StackPanel), оно будет выглядеть так только во время выполнения, если я разверну окно до максимума (если не отключено на 50 пикселей). Значит ли это, что все универсальные пользовательские интерфейсы приложений должны создаваться, начиная с верхнего левого угла?

РЕДАКТИРОВАТЬ:
Вот несколько ссылок на изображения, которые показывают, что я описываю.
Вот что происходит, когда я перемещаю стековую панель:

https://goo.gl/photos/D47PHtkd1nTGJTyo8 — > против

https://goo.gl/photos/wVH1uPdB43a9oSdf7 — > работает

Я бы опубликовал ссылки на другие изображения, которые у меня есть, но у меня пока нет представителя.

РЕДАКТИРОВАТЬ:
XAML код:

    <StackPanel  Margin="120,30,0,0">
<TextBlock HorizontalAlignment="Left" Text="Hello World" FontSize="36"/>
<TextBlock Text="What's your name?"/>
<StackPanel Orientation="Horizontal" Margin="0,20,0,20">
<TextBox x:Name="nameInput" Width="300" HorizontalAlignment="Left"/>
<Button Content="Say &quot;Hello&quot;"/>
</StackPanel>
<TextBlock x:Name="greetingOutput"/>
</StackPanel>

Я только что вставил это в блок кода, все это прямо из Hello World для учебника по универсальным приложениям для Windows 10. Я никогда не делал никаких изменений в самом коде, я просто менял вещи с помощью дизайнера пользовательского интерфейса.

0

Решение

В идеале вы должны опубликовать свой XAML, но из скриншота видно, что вы полагаетесь на установку Margin — Я предполагаю, что вы перетащили элемент управления на конструктор и использовали пользовательский интерфейс для выполнения макета. Лучший подход заключается в использовании HorizontalAlignment а также VerticalAlignment свойства, чтобы макет вашего интерфейса так, как вы хотите, и полагаться на Margin для фактических «полей» (дополнительные пробелы вокруг элемента управления).

0

Другие решения


По вопросам рекламы [email protected]