UWP:只有 XAML 控件的一小条水平带可见

UWP: Only a small horizontal band of XAML control is visible

这无疑是迄今为止我在编程时遇到的最令人困惑的事情。由于某些未知原因,只有 XAML 控件的一小部分水平带(在本例中是一个按钮(最上面的那个)和一个 TextBlock)是可见的,如果应用程序不是全屏,则什么也看不到!另一方面,左侧的按钮(代码中最下方的按钮)是通过 "Common XAML Controls" 下的 Visual Studio "Toolbox" 获得的按钮的纯副本,有效很好!

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Button x:Name="button" Content="My button name" Height="77" Margin="809,198,0,805" Width="353"/>
    <TextBlock x:Name="textBlock" Height="83" Text="An example...." Margin="809,428,0,0" Width="353" VerticalAlignment="Top" HorizontalAlignment="Left"/>
    <Button x:Name="button1" Content="Button" HorizontalAlignment="Left" Height="117" Margin="542,327,0,0" VerticalAlignment="Top" Width="156"/>
</Grid>

包含三个 XAML 控件的文件是唯一已更改的文件,否则它只是 Visual Studio 中的默认空白 UWP。我使用的是桌面 (1920 x 1080) 格式。

根据我之前写的内容,有人能告诉我我能做些什么来解决这个问题吗,因为我完全一无所知。

答案: 在与另一个出现类似问题的项目混在一起后,我偶然发现了一个解决方案。问题在于,由于某种原因,如果对面的边距不为 0(顶部与底部、右侧与左侧),XAML 控件将无法正常工作。为了仍然能够指定 XAML 控件的位置,必须添加 Horizo​​ntalAlignment 和 VerticalAlignment,并且方向与您输入到边距的参数相同。因此,如果您为其指定了正确的边距,您还必须将 Horizo​​ntalAlignment 设置为正确的,如下所示。反之亦然。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Button x:Name="button" Content="My button name" Height="77" Margin="0,0,500,900" Width="353" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
    <TextBlock x:Name="textBlock" Height="83" Text="An example...." Margin="809,428,0,0" Width="353" VerticalAlignment="Top" HorizontalAlignment="Left"/>
    <Button x:Name="button1" Content="Button" HorizontalAlignment="Left" Height="117" Margin="542,327,0,0" VerticalAlignment="Top" Width="156"/>
</Grid>

所以我不确定您所说的 class 允许它是什么意思。您只需要所用控件的一些依赖属性。所以试试这个。真的花了不到一分钟,问你是否有问题。根据您的 style/habits,有很多不同的方法可以做同样的事情,这只是其中一种。

输出:

片段:

<!-- We have a bit of a margin on the parent for spacing 
     and shrink the space to what's necessary. -->

<Grid Background="White" Margin="10,10,20,10"
      VerticalAlignment="Top">
    <Grid.RowDefinitions>
        <!-- Let's let our odd # rows do our spacing instead of random margins -->
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="4*"/>
        <ColumnDefinition Width="6*"/>
    </Grid.ColumnDefinitions>
    <Grid.Resources>
        <!-- So we don't set the same properties on every instance. -->
        <Style TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}">
            <Setter Property="HorizontalAlignment" Value="Right"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Margin" Value="5"/>
        </Style>
    </Grid.Resources>

    <TextBlock Grid.ColumnSpan="2" Text="Exaaaaaaamples"
               HorizontalAlignment="Center"/>

    <TextBlock Grid.Row="2" 
               Text="Email:"/>
    <TextBox Grid.Row="2" Grid.Column="1"/>

    <TextBlock Grid.Row="4"
               Text="Username:"/>
    <TextBox Grid.Row="4" Grid.Column="1"/>

    <TextBlock Grid.Row="6"
               Text="Password:"/>
    <PasswordBox Grid.Row="6" Grid.Column="1"/>

    <TextBlock Grid.Row="8"
               Text="Age of Account:"/>
    <TextBox Grid.Row="8" Grid.Column="1"/>

</Grid>

希望这与您正在寻找的内容一致,如果不是这样说,我们会为您排序。 :)