WPF - Horizo​​ntalAlignment行为

时间:2014-03-15 14:19:09

标签: c# wpf xaml grid stackpanel

我正在尝试使用WPF,所以我创建了一些测试窗口以查看它是如何发生的,我遇到了一些我没想到的使用Horizo​​ntalAlignment属性的行为。

首先,屏幕看起来像这样:
enter image description here

问题是,在标记网格的底行,我希望左边的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的布局?

1 个答案:

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