Я только недавно получил 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 "Hello""/>
</StackPanel>
<TextBlock x:Name="greetingOutput"/>
</StackPanel>
Я только что вставил это в блок кода, все это прямо из Hello World для учебника по универсальным приложениям для Windows 10. Я никогда не делал никаких изменений в самом коде, я просто менял вещи с помощью дизайнера пользовательского интерфейса.
В идеале вы должны опубликовать свой XAML, но из скриншота видно, что вы полагаетесь на установку Margin
— Я предполагаю, что вы перетащили элемент управления на конструктор и использовали пользовательский интерфейс для выполнения макета. Лучший подход заключается в использовании HorizontalAlignment
а также VerticalAlignment
свойства, чтобы макет вашего интерфейса так, как вы хотите, и полагаться на Margin
для фактических «полей» (дополнительные пробелы вокруг элемента управления).