VB.NET WPF如何在窗口/表单中居中多个控件?

时间:2016-11-04 19:08:58

标签: wpf vb.net format controls margin

我对WinForms更加熟悉,因为它不是那么惩罚。在WinForms中,您可以立即选择3个控件,然后单击格式>对齐>形式和bam的中心!完成工作。

但是在WPF中,我无法再在“格式”选项卡中找到它。所以想知道我是否在某处忽略了它?已经搜索了谷歌几个小时,最后决定在这里问。

这是一张进一步解释我的问题的图片。 如果我选择Middles,控件将相互重叠。我怎样才能确保所有3个都在表格/网格/组框中很好地居中?

问题2 =另外,如何确保文本框之间的空格相等,而不是每次计算位置? enter image description here

1 个答案:

答案 0 :(得分:2)

使用WPF,您必须以不同的方式思考。我创建了以下Window.xaml,希望能说明我的意思。我在网格中有网格(gridception?)以使事情正确对齐。我使用StackPanels进行一些控制。调整大小时无需进行任何计算。我添加了一些颜色,以显示不同网格的位置。

Sample Xaml with grids

<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>

设置列/行的高度/宽度时,您还可以使用百分比使一行始终占据网格高度的20%:

<Grid.RowDefinitions>
    <RowDefinition Height=2*></RowDefinition>
    <RowDefinition Height="8*"></RowDefinition>
</Grid.RowDefinitions>