VB.NET WPF 如何让多个控件居中window/forms?
VB.NET WPF How to center multiple controls in window/forms?
我对 WinForms 更熟悉,因为它没有那么麻烦。在 WinForms 中,您可以立即 select 3 个控件,然后单击“格式”>“对齐”>“居中”,砰!工作完成。
但在 WPF 中,我无法再在“格式”选项卡中找到它。所以想知道我是否在某处忽略了它?已经搜索了 google 几个小时,最后决定在这里提问。
这里有一张图片来进一步解释我的问题。
如果我选择 Middles,控件将相互重叠。我怎样才能确保所有 3 个都在 form/grid/groupbox 中很好地居中?
问题 2 = 另外,我怎样才能确保文本框彼此相等 space 而不是每次都计算位置?
对于 WPF,您必须以不同的方式思考。我创建了以下 Window.xaml,希望能说明我的意思。我在网格中有网格(gridception?)以使事物正确对齐。我将 StackPanels 用于某些控件。调整大小时无需进行任何计算。我添加了一些颜色只是为了显示不同网格的位置。
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ThrowAwayWpfApplication.Window2"
Title="Window2" Height="480" Width="640">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical">
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
</StackPanel>
<Border Grid.Column="1" Margin="5" BorderThickness="2" BorderBrush="Red" Background="Aqua">
<Canvas Grid.Column="1" Margin="10" />
</Border>
</Grid>
<Grid Grid.Row="1" Background="AliceBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical" Margin="5">
<Label>Permanent Number</Label>
<TextBox Margin="5,2,5,2" />
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="5">
<Label>Quotation Number</Label>
<TextBox Margin="5,2,5,2" />
</StackPanel>
<StackPanel Grid.Column="2" Orientation="Vertical" Margin="5">
<Label>Invoice Number</Label>
<TextBox Margin="5,2,5,2" />
</StackPanel>
</Grid>
</Grid>
</Window>
设置columns/rows的heights/widths时,也可以使用百分比让一行总是占网格高度的20%:
<Grid.RowDefinitions>
<RowDefinition Height=2*></RowDefinition>
<RowDefinition Height="8*"></RowDefinition>
</Grid.RowDefinitions>
我对 WinForms 更熟悉,因为它没有那么麻烦。在 WinForms 中,您可以立即 select 3 个控件,然后单击“格式”>“对齐”>“居中”,砰!工作完成。
但在 WPF 中,我无法再在“格式”选项卡中找到它。所以想知道我是否在某处忽略了它?已经搜索了 google 几个小时,最后决定在这里提问。
这里有一张图片来进一步解释我的问题。 如果我选择 Middles,控件将相互重叠。我怎样才能确保所有 3 个都在 form/grid/groupbox 中很好地居中?
问题 2 = 另外,我怎样才能确保文本框彼此相等 space 而不是每次都计算位置?
对于 WPF,您必须以不同的方式思考。我创建了以下 Window.xaml,希望能说明我的意思。我在网格中有网格(gridception?)以使事物正确对齐。我将 StackPanels 用于某些控件。调整大小时无需进行任何计算。我添加了一些颜色只是为了显示不同网格的位置。
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ThrowAwayWpfApplication.Window2"
Title="Window2" Height="480" Width="640">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical">
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
<Label>Development Type</Label>
<ComboBox Margin="5,2,5,2"></ComboBox>
</StackPanel>
<Border Grid.Column="1" Margin="5" BorderThickness="2" BorderBrush="Red" Background="Aqua">
<Canvas Grid.Column="1" Margin="10" />
</Border>
</Grid>
<Grid Grid.Row="1" Background="AliceBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical" Margin="5">
<Label>Permanent Number</Label>
<TextBox Margin="5,2,5,2" />
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="5">
<Label>Quotation Number</Label>
<TextBox Margin="5,2,5,2" />
</StackPanel>
<StackPanel Grid.Column="2" Orientation="Vertical" Margin="5">
<Label>Invoice Number</Label>
<TextBox Margin="5,2,5,2" />
</StackPanel>
</Grid>
</Grid>
</Window>
设置columns/rows的heights/widths时,也可以使用百分比让一行总是占网格高度的20%:
<Grid.RowDefinitions>
<RowDefinition Height=2*></RowDefinition>
<RowDefinition Height="8*"></RowDefinition>
</Grid.RowDefinitions>