2016-09-16 5 views
1

Почему приложение UWP (Universal Windows Platform) добавляет лишнее место в верхней и нижней части моего приложения, хотя там ничего нет?Почему в UWP-приложении работает пустое место в верхней и нижней частях моей страницы? XAML или Design view показывает пустое пространство

Вот как это выглядит: extra space

Даже если в Visual Studio 2013 (режим дизайна), вы можете увидеть, что синее ограничивающее поле отображается в нижней части страницы следующим образом:

design mode

Внешний серый - это устройство, на котором он будет работать.

Часть XAML выглядит следующим образом:

<Page 
    x:Class="CYaPass.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:CYaPass" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    Height="515" Width="570" Background="LightGray" Loaded="Page_Loaded"> 

    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="320"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <StackPanel Grid.Column="0" Grid.Row="0"> 
      <TextBlock FontSize="16" HorizontalAlignment="Center">1. Select a Site/Key</TextBlock> 
      <ListView BorderThickness="2" BorderBrush="Aquamarine" 
         x:Name="SiteListBox" HorizontalAlignment="Stretch" VerticalAlignment="Center" Height="251" 
         Margin="10,10,0,0" Width="Auto" SelectionChanged="SiteListBox_SelectionChanged"> 
       <ListView.ItemContainerStyle> 
        <Style TargetType="ListViewItem"> 
         <Setter Property="Padding" Value="5,0,0,0" /> 
        </Style> 
       </ListView.ItemContainerStyle> 
       <ListViewItem Content="Item 2"/> 
      </ListView> 

      <StackPanel Margin="10,0,0,0" Orientation="Horizontal" Grid.Column="0"> 
       <Button x:Name="DeleteSiteButton" Content="Delete Site" 
         HorizontalAlignment="Right" Margin="0,0,0,0" VerticalAlignment="Top" Click="DeleteSiteButton_Click"/> 
       <Button x:Name="AddSiteButton" Content="Add Site" HorizontalAlignment="Right" 
        Margin="10,0,0,0" VerticalAlignment="Top" Click="AddSiteButton_Click"/> 
      </StackPanel> 
     </StackPanel> 
     <TextBox x:Name="passwordTextBox" HorizontalAlignment="Left" Margin="7,150,0,0" Grid.Row="1" Grid.ColumnSpan="2" 
       TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="560"/> 
     <StackPanel HorizontalAlignment="Left" Height="128" Margin="10,0,0,0" Grid.Column="0" Grid.Row="1" 
        VerticalAlignment="Top" Width="285"> 
      <Grid Margin="0,0,-11,0"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="40" ></RowDefinition> 
        <RowDefinition Height="40" ></RowDefinition> 
        <RowDefinition Height="40" ></RowDefinition> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="180"/> 
        <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 
       <CheckBox x:Name="addUppercaseCheckbox" Grid.Row="0" Grid.Column="0" Content="Add Uppercase" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="254" Click="addUppercaseCheckbox_Click" Margin="7,0,3,0"/> 
       <CheckBox x:Name="addSpecialCharscheckBox" Grid.Row="1" Grid.Column="0" Content="Add Special Chars" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="7,0,3,0"/> 
       <TextBox x:Name="specialCharsTextBox" Grid.Column="1" Grid.Row="1" Margin="7,0,3,0" VerticalAlignment="Center" HorizontalAlignment="Stretch" Grid.RowSpan="1" TextWrapping="NoWrap" Text="#"/> 
       <CheckBox x:Name="setMaxLengthCheckBox" Grid.Row="2" Grid.Column="0" Content="Set Max Length" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="7,0,3,0"/> 
       <local:NumericUpDown Grid.Column="1" HorizontalAlignment="Left" Margin="7,0,3,0" Grid.Row="2" VerticalAlignment="Center" Width="64"/> 
      </Grid> 
     </StackPanel> 
     <StackPanel Grid.Column="1" Grid.Row="0"> 
      <TextBlock Grid.Column="1" Grid.Row="0" FontSize="16" HorizontalAlignment="Center">2. Draw a pattern</TextBlock> 
      <Canvas HorizontalAlignment="Center" x:Name="MainCanvas" 
        Height="252" Width="252" Margin="7,10,0,0" VerticalAlignment="Top" Background="AliceBlue" Tapped="MainCanvas_Tapped" PointerMoved="MainCanvas_PointerMoved"/> 
      <Button x:Name="ClearGridButton" Content="Clear" 
        Margin="50,0,10,0" VerticalAlignment="Center" Click="ClearGridButton_Click" HorizontalAlignment="Right"/> 
     </StackPanel> 

    </Grid> 
</Page> 

Вы можете увидеть ширина страницы шире, чем высота, но когда приложение запускается на рабочем столе или тренажере устройства (как 7") Ватный дополнительную пространство проталкивает в верхнюю и нижнюю часть.

UWP Принудительным Минимум?

является ли это из-за какой-то минимальный размер или что-то, что UWP силы на приложениях?

не может изменять размер Меньшие при запуске

Даже если я хватаю дно формы или в верхнюю рамку ограничительной, когда приложение работает, я не могу сделать его меньше.

+1

Я запускаю ваш код, только пространство Я вижу его в нижней части, потому что ваш последний StackPanel не охватывает всю страницу (измените ее на Grid и дайте ей цвет фона, чтобы увидеть) – thang2410199

+0

@daylight Это потому, что вы установили высоту и ширину страницы, поэтому содержимое всегда находится в центре ... –

+0

@ thang2410199 На другом компьютере на VStudio 2015, запущенном на Win10, я забрасываю XAML и запускаю его, и вы правы, нет места. Тот, который отображается, показывает, что пространство находится на VStudio 2013, работающем как UWP Win8.1. Предполагалось, что Microsoft все это будет работать одинаково. Есть определенные пробелы. Хорошая идея об изменении цвета фона. Я попробую. Thx – raddevus

ответ

4

По умолчанию для выравнивания по умолчанию установлено значение Center, потому что вы установили Height и Width вашей страницы, чтобы ваша страница была размещена в Центре и не заполняла весь экран.

Одно из возможных решений состоит в том, чтобы добавить к Page xaml Атрибуты этой части кода: VerticalAlignment="Top".

Для установки HorizontalAlignment влево добавить это: HorizontalAlignment="Left".

Еще один совет: если вам не нужно отображать более одной страницы xaml на экране, оставьте страницу Height и Width по умолчанию.

+2

Ваш ответ привлек меня к решению. Ты прав. Лучше не устанавливать ширину и высоту страницы. Когда я делал это на Win8.1/VStudio 2013, тогда ширина была автоматической. Однако по какой-то причине высота была слишком длинной. На Win10/VStudio 2015 он был точно таким же, как ожидалось. Отметьте это как ответ. Спасибо за информацию. Я буду исследовать больше об этом, чтобы лучше понять. – raddevus