C# UWP组在运行时有奇怪的行为

C# UWP组在运行时有奇怪的行为,c#,xaml,uwp-xaml,C#,Xaml,Uwp Xaml,我是UWP的XAML新手。因此,我尝试使用.XAML制作4个分组框。当我试图运行代码时,它会拉伸组框,这使GUI看起来很糟糕。.XAML中的什么会导致这样的事情 在设计时,它看起来像: 当我在模拟器中运行代码时,它看起来像: .XAML代码: <Grid> <ComboBox HorizontalAlignment="Center" Margin="0,48,0,0" VerticalAlignment="Top" Height="42" Width="232"/>

我是UWP的XAML新手。因此,我尝试使用.XAML制作4个分组框。当我试图运行代码时,它会拉伸组框,这使GUI看起来很糟糕。.XAML中的什么会导致这样的事情

在设计时,它看起来像:

当我在模拟器中运行代码时,它看起来像:

.XAML代码:

<Grid>
  <ComboBox HorizontalAlignment="Center" Margin="0,48,0,0" VerticalAlignment="Top" Height="42" Width="232"/>
  <ListView x:Name="DatabaseInfo" Header="Database Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" Margin="212,130,551,276" FontFamily="Tahoma" >
     <ListView.HeaderTemplate>
        <DataTemplate>
           <ListViewHeaderItem Content="{Binding}" Height="40" />
        </DataTemplate>
     </ListView.HeaderTemplate>

     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="ServerNameDisplay" HorizontalAlignment="Left" Text="Server" Width="115" Height="25" />
        <TextBox Name="Server" HorizontalAlignment="Right" Text="" Height="25" Width="115" />
     </StackPanel>

     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="DatabaseNameDisplay" HorizontalAlignment="Left" Text="Database" Width="115" Height="25" />
        <TextBox Name="Database" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="UserNameDisplay" HorizontalAlignment="Left" Text="UserName" Width="115" Height="25" />
        <TextBox Name="UserName" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="PasswordDisplay" HorizontalAlignment="Left" Text="Password" Width="115" Height="25" />
        <TextBox Name="Password" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
  </ListView>
  <ListView x:Name="RabbitMQInfo" Header="Rabbit MQ Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" Margin="564,130,199,350" FontFamily="Tahoma" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
     <ListView.HeaderTemplate>
        <DataTemplate>
           <ListViewHeaderItem Content="{Binding}" Height="40" />
        </DataTemplate>
     </ListView.HeaderTemplate>
     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="RabbitMQUserDisplay" HorizontalAlignment="Left" Text="UserName" Width="115" Height="25" />
        <TextBox Name="RabbitMQUser" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="RabbitMQPassDisplay" HorizontalAlignment="Left" Text="Password" Width="115" Height="25" />
        <TextBox Name="RabbitMQPass" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
  </ListView>
  <ListView x:Name="MachineInfo" Header="Name Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" Margin="212,398,551,125" FontFamily="Tahoma" >
     <ListView.HeaderTemplate>
        <DataTemplate>
           <ListViewHeaderItem Content="{Binding}" Height="40" />
        </DataTemplate>
     </ListView.HeaderTemplate>
     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="NameDisplay" HorizontalAlignment="Left" Text="Name" Width="115" Height="25" />
        <TextBox Name="Name" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
  </ListView>
  <ListView x:Name="IPAddressInfo" Header="IP Address Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" Margin="564,332,199,156" FontFamily="Tahoma" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
     <ListView.HeaderTemplate>
        <DataTemplate>
           <ListViewHeaderItem Content="{Binding}" Height="40" />
        </DataTemplate>
     </ListView.HeaderTemplate>
     <StackPanel Width="230" Height="30" Orientation="Horizontal" >
        <TextBlock Name="IPAddressDisplay" HorizontalAlignment="Left" Text="IPAddress" Width="115" Height="25" />
        <TextBox Name="IPAddress" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
     <StackPanel Width="230" Height="30" Orientation="Horizontal">
        <TextBlock Name="PortDisplay" HorizontalAlignment="Left" Text="Port" Width="115" Height="25" />
        <TextBox Name="Port" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
     </StackPanel>
  </ListView>
  <Button x:Name="btnSave" Content="Save" Click="btnSave_Click"  HorizontalAlignment="Center" Margin="0,539,0,0" VerticalAlignment="Top" Width="100" Height="50"/>

关于UWP应用程序,我的另一个问题是,运行在Bin文件夹中输出的.exe是否需要一些特殊的东西?当尝试以管理员身份运行.exe时,它会崩溃,并出现未经处理的win32异常

当我试图运行代码时,它会拉伸组框,这使GUI看起来很糟糕。.XAML中的什么会导致这样的事情

您使用
Margin
属性来控制XAML控件的位置,这将导致您看到的混乱布局

请参阅文档以了解如何在UWP中使用XAML进行良好的布局

例如,您可以简单地使用网格控件将这些控件放在不同的行和列上

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="4*"></RowDefinition>
        <RowDefinition Height="4*"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <ComboBox HorizontalAlignment="Center" Grid.Row="0" Grid.ColumnSpan="2" VerticalAlignment="Center" Height="42" Width="232"/>
    <ListView x:Name="DatabaseInfo" Grid.Row="1" Grid.Column="0" Header="Database Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" FontFamily="Tahoma" >
        <ListView.HeaderTemplate>
            <DataTemplate>
                <ListViewHeaderItem Content="{Binding}" Height="40" />
            </DataTemplate>
        </ListView.HeaderTemplate>

        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="ServerNameDisplay" HorizontalAlignment="Left" Text="Server" Width="115" Height="25" />
            <TextBox Name="Server" HorizontalAlignment="Right" Text="" Height="25" Width="115" />
        </StackPanel>

        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="DatabaseNameDisplay" HorizontalAlignment="Left" Text="Database" Width="115" Height="25" />
            <TextBox Name="Database" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="UserNameDisplay" HorizontalAlignment="Left" Text="UserName" Width="115" Height="25" />
            <TextBox Name="UserName" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="PasswordDisplay" HorizontalAlignment="Left" Text="Password" Width="115" Height="25" />
            <TextBox Name="Password" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
    </ListView>
    <ListView x:Name="RabbitMQInfo" Grid.Row="1" Grid.Column="1" Header="Rabbit MQ Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" FontFamily="Tahoma" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <ListView.HeaderTemplate>
            <DataTemplate>
                <ListViewHeaderItem Content="{Binding}" Height="40" />
            </DataTemplate>
        </ListView.HeaderTemplate>
        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="RabbitMQUserDisplay" HorizontalAlignment="Left" Text="UserName" Width="115" Height="25" />
            <TextBox Name="RabbitMQUser" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="RabbitMQPassDisplay" HorizontalAlignment="Left" Text="Password" Width="115" Height="25" />
            <TextBox Name="RabbitMQPass" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
    </ListView>
    <ListView x:Name="MachineInfo" Grid.Row="2" Grid.Column="0" Header="Name Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" FontFamily="Tahoma" >
        <ListView.HeaderTemplate>
            <DataTemplate>
                <ListViewHeaderItem Content="{Binding}" Height="40" />
            </DataTemplate>
        </ListView.HeaderTemplate>
        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="NameDisplay" HorizontalAlignment="Left" Text="Name" Width="115" Height="25" />
            <TextBox Name="Name" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
    </ListView>
    <ListView x:Name="IPAddressInfo" Grid.Row="2" Grid.Column="1" Header="IP Address Info." BorderThickness="2" BorderBrush="Black" SelectionMode="None" FontFamily="Tahoma" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <ListView.HeaderTemplate>
            <DataTemplate>
                <ListViewHeaderItem Content="{Binding}" Height="40" />
            </DataTemplate>
        </ListView.HeaderTemplate>
        <StackPanel Width="230" Height="30" Orientation="Horizontal" >
            <TextBlock Name="IPAddressDisplay" HorizontalAlignment="Left" Text="IPAddress" Width="115" Height="25" />
            <TextBox Name="IPAddress" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
        <StackPanel Width="230" Height="30" Orientation="Horizontal">
            <TextBlock Name="PortDisplay" HorizontalAlignment="Left" Text="Port" Width="115" Height="25" />
            <TextBox Name="Port" HorizontalAlignment="Right" Text="" Height="25" Width="115"/>
        </StackPanel>
    </ListView>
    <Button x:Name="btnSave" Content="Save"  Grid.Row="3" Grid.ColumnSpan="2"  HorizontalAlignment="Center"  VerticalAlignment="Center" Width="100" Height="50"/>
</Grid>

关于UWP应用程序,我的另一个问题是,运行在Bin文件夹中输出的.exe是否需要一些特殊的东西?当尝试以管理员身份运行.exe时,它会崩溃,并出现未经处理的win32异常

UWP在沙箱中运行,它不同于经典的桌面应用程序。不能直接双击“.exe”文件来启动它。在VisualStudio中编写代码时,可以按F5启动并调试它。如果已部署,您可以从windows的“开始”菜单启动它

提示:下次请不要在一篇文章中发布多个问题


那么,如何在桌面应用程序的安装程序中包含UWP的release.exe呢?如果您不能运行它,除非您在沙箱环境中。@DotNetProgrammer请检查