当UWP应用程序运行时,为什么页面顶部和底部有空白空间? XAML或Design视图显示空白区域

问题描述:

为什么我的UWP(通用Windows平台)应用程序在应用程序的顶部和底部强制使用额外的空间,即使没有任何内容?当UWP应用程序运行时,为什么页面顶部和底部有空白空间? XAML或Design视图显示空白区域

这里是什么样子: 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在运行于Win10上的VStudio 2015上的另一台计算机上,我放入XAML并运行它,并且您是对的,没有空间。显示的那个显示空间在VStudio 2013上以Win8.1 UWP的形式运行。微软本来应该让这些东西在各处运行。有明确的差距。改变背景颜色的好主意。我会尝试。 Thx – raddevus

默认的内容,对齐方式设置为Center因为你设置你的页面的HeightWidth,让你的网页被放置在中心,而不是填充整个屏幕。

一个可能的解决方案是添加到Page xaml属性这段代码: VerticalAlignment="Top"

若要将HorizontalAlignment置于左侧,请添加: HorizontalAlignment="Left"

还有一条建议:如果您不需要在屏幕上显示多个xaml页面,请将页面保留为默认页面HeightWidth

+2

您的回答让我接触到了解决方案。你是对的。最好不要设置页面的宽度和高度。当我在Win8.1/VStudio 2013上执行此操作时,宽度为自动设置。然而,无论出于何种原因,身高仍然过长。在Win10/VStudio 2015上,它的大小与预期完全一致。标记为答案。谢谢(你的)信息。我会更多地研究它,所以我更好地理解。 – raddevus