TOC

This article has been localized into Chinese by the community.

面板控件:

Grid-单位

到目前为止,我们主要使用星形宽度/高度,它指定一行或一列应该占据组合空间的一定百分比。但是,还有两种指定列或行的宽度或高度的方法:绝对单元和自动宽度/高度。让我们尝试创建一个网格,我们将它们混合在一起:

<Window x:Class="WpfTutorialSamples.Panels.GridUnits"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="GridUnits" Height="200" Width="400">
	<Grid>
		<Grid.ColumnDefinitions>
			<ColumnDefinition Width="1*" />
			<ColumnDefinition Width="Auto" />
			<ColumnDefinition Width="100" />
		</Grid.ColumnDefinitions>
		<Button>Button 1</Button>
		<Button Grid.Column="1">Button 2 with long text</Button>
		<Button Grid.Column="2">Button 3</Button>
	</Grid>
</Window>

在这个示例中,第一个按钮具有星形宽度,第二个按钮将其宽度设置为Auto,最后一个按钮具有100像素的静态宽度。

结果可以在截屏上看到,其中第二个按钮仅占用它渲染较长文本所需的空间量,第三个按钮占用它承诺的100个像素,而第一个按钮(具有可变的宽度)占用剩余的空间。

在一个网格中,一个或多个列(或行)具有可变的(星形)宽度,它们自动地共享未使用的绝对宽度或自动宽度/高度的列/行所使用的宽度/高度。当我们调整窗口大小时,这一点变得更加明显:

在第一个屏幕快照中,您将看到Grid为最后两个按钮保留空间,即使这意味着第一个按钮没有获得正确呈现所需的所有空间。在第二个屏幕快照中,您将看到最后两个按钮保持完全相同的空间量,将剩余空间留给第一个按钮。

这可以是一个非常有用的技术,当设计一个广泛的对话。例如,考虑一个简单的联系人表单,其中用户输入姓名、电子邮件地址和评论。前两个字段通常具有固定的高度,而最后一个字段可能占用尽可能多的空间,留下空间来键入更长的注释。在下一章中,我们将尝试使用不同高度和宽度的网格和行和列构建联系表单。

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!