为什么在设计器中使用的窗口边距在运行程序中变小?
本文关键字:程序 运行 为什么 窗口 | 更新日期: 2023-09-27 18:07:01
在Windows 8.1上使用Visual Studio 2013中的设计器,并创建一个简单的窗口,其中文本框的右侧和底部有10p的边距,当我运行程序时,边距会发生变化。我该如何避免这种情况?
示例图片:(我还不能发布图片,所以这里是裸链接)
https://i.stack.imgur.com/LCrXL.jpg https://i.stack.imgur.com/PUceC.jpg另一张图解释得更好。
正如你在上面的图片中看到的,当运行程序时,页边距发生了巨大的变化。
My Windows XAML Code is:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="400" Width="800" Focusable="False" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" UseLayoutRounding="False">
<Grid>
<TextBox HorizontalAlignment="Left" Height="351" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="774"/>
</Grid>
另一张图片的XAML代码:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="400" Width="800" Focusable="False" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" UseLayoutRounding="False">
<Grid>
<TextBox HorizontalAlignment="Left" Height="205" Margin="10,156,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="774"/>
<Button Content="Button" HorizontalAlignment="Left" Margin="709,55,0,0" VerticalAlignment="Top" Width="75"/>
<RadioButton Content="RadioButton" HorizontalAlignment="Left" Margin="699,101,0,0" VerticalAlignment="Top"/>
</Grid>
不指定Width
和Height
,只需指定一个边距并允许其拉伸:
<TextBox HorizontalAlignment="Stretch" Margin="10" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Stretch" />
请注意,您明确地设置了10,10,0,0
的边距,这意味着您将只在2面获得边距-使用单个数字(10
)或使所有4个数字10
在四周放置偶数边距。
根据新版本编辑:
在这种情况下,更好的方法是使用Grid
布局特性:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="2*" />
<Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<Grid.ColumnDefinitions>
<TextBox Grid.Row="2" Grid.ColumnSpan="2" Margin="10" TextWrapping="Wrap" Text="TextBox" />
<Button Grid.Row="0" Grid.Column="1" Content="Button" Margin="10" Width="75"/>
<RadioButton Grid.Row="1" Grid.Column="1" Content="RadioButton" Margin="10" />
</Grid>