有了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>
當設置高度/列/行的寬度,也可以用百分比來做出一個行始終佔20%,對電網的高度:
<Grid.RowDefinitions>
<RowDefinition Height=2*></RowDefinition>
<RowDefinition Height="8*"></RowDefinition>
</Grid.RowDefinitions>
如果您正確使用佈局系統,您會發現許多事情實際上更容易。在這種情況下,您正在尋找'HorizontalAlignment'。然後把你的三個控件放在一個三列的網格中,使間距均勻。 –
如果你正在計算你的控件的位置,你很可能做錯了。在WPF中,你不應該設置任何對象的X,Y屬性來定位它們。使用各種佈局控件(網格,堆疊面板等)以及邊距,填充和對齊屬性(以及其他)來創建佈局。你必須與WinForms不同地思考。 –
@NicoSchertler默認情況下,horizontalAlignment全部設置爲「左」。我已經在組框中添加了一個拉伸的網格。 – Student