我正在尝试使用WPF,所以我创建了一些测试窗口以查看它是如何发生的,我遇到了一些我没想到的使用HorizontalAlignment属性的行为。
首先,屏幕看起来像这样:
问题是,在标记网格的底行,我希望左边的textBlock和CheckBox对齐,中心textBlock和DatePicker与中心对齐,右边对齐。正如你在前面的图片中看到的,它并没有真正发生。
此网格行的XAML:
<StackPanel Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal">
<TextBlock HorizontalAlignment="Left" Margin="10">Filter By Date</TextBlock>
<CheckBox HorizontalAlignment="Left" Margin="2" Height="18" Width="13"></CheckBox>
<TextBlock HorizontalAlignment="Center" Margin="10">Begin Date</TextBlock>
<DatePicker HorizontalAlignment="Center" Margin="2"> </DatePicker>
<TextBlock HorizontalAlignment="Right" Margin="10">End Date</TextBlock>
<DatePicker HorizontalAlignment="Right" Margin="2"></DatePicker>
</StackPanel>
我如何使它们更接近边缘和中心而不仅仅是一个接一个,就像我猜的那样是自动StackPanel的布局?
答案 0 :(得分:1)
横向StackPanel
会忽略其子版的HorizontalAlignment
,但您可以使用Grid
代替3 StackPanel
左对齐,居中和右对齐:
<Grid Grid.Row="2" Grid.ColumnSpan="2">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Margin="10">Filter By Date</TextBlock>
<CheckBox Margin="2" Height="18" Width="13"></CheckBox>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Margin="10">Begin Date</TextBlock>
<DatePicker Margin="2"> </DatePicker>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock Margin="10">End Date</TextBlock>
<DatePicker Margin="2"></DatePicker>
</StackPanel>
</Grid>