我想我可以避免使用手工編碼的XAML進行對齊。我最終什麼了,是這樣(的樣式可以在其他窗口重複使用):
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" SizeToContent="WidthAndHeight">
<Window.Resources>
<Style x:Key="ControlStyle" TargetType="Control">
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style BasedOn="{StaticResource ControlStyle}" TargetType="Label">
<Setter Property="Margin" Value="-4,0,0,0"/>
</Style>
<Style BasedOn="{StaticResource ControlStyle}" TargetType="TextBox">
<Setter Property="Width" Value="120"/>
</Style>
<Style BasedOn="{StaticResource ControlStyle}" TargetType="Button">
<Setter Property="MinWidth" Value="70"/>
</Style>
<Style TargetType="Grid">
<Setter Property="Margin" Value="10,10,10,10"/>
</Style>
<Style x:Key="SeparatorColumn" TargetType="ColumnDefinition">
<Setter Property="Width" Value="10"/>
</Style>
<Style x:Key="SeparatorRow" TargetType="RowDefinition">
<Setter Property="Height" Value="3"/>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Style="{StaticResource SeparatorColumn}"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Style="{StaticResource SeparatorRow}"/>
<RowDefinition/>
<RowDefinition Style="{StaticResource SeparatorRow}"/>
<RowDefinition/>
<RowDefinition Style="{StaticResource SeparatorRow}"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Label:</Label>
<TextBox Grid.Row="0" Grid.Column="2">TextBox</TextBox>
<Label Grid.Row="2" Grid.Column="0">Label:</Label>
<TextBox Grid.Row="2" Grid.Column="2">TextBox</TextBox>
<Button Grid.Row="4" Grid.ColumnSpan="3">Button</Button>
<Label Grid.Row="6" Grid.Column="0">Label:</Label>
<TextBox Grid.Row="6" Grid.Column="2">TextBox</TextBox>
</Grid>
</Window>
您是否找到了更好,更完整的解決方案? – 2011-07-29 13:28:10