如何轻松设置Grid布局内容的默认对齐方式?

时间:2014-05-28 22:08:52

标签: c# wpf

目前,一些示例代码可能是这样的:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Button Content="Click me" Name="MainButton" Click="MainButton_Click"  Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <TextBlock Name="CounterBlock" Text="Count: 0" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>

我正在寻找一种为内容设置默认单元格对齐的方法,因此我不必为每个单元格指定HorizontalAlignmentVerticalAlignment

<Grid DefaultHorizontalAlignment="Center" DefaultVerticalAlignment="Center">
    ...
</Grid>

甚至:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" DefaultHorizontalAlignment="Center" />
        <RowDefinition Height="*" DefaultHorizontalAlignment="Center" />
    </Grid.RowDefinitions>
</Grid>

我错过了什么,或者这不是一个简单的过程吗?谢谢!

1 个答案:

答案 0 :(得分:1)

网格级别没有类似ContentAlignment的属性。您可以为子元素设置样式。 你可以将它添加到网格。

<Grid.Resources>
    <Style x:Key="alignmentStyle" TargetType="{x:Type FrameworkElement}">
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
    <Style TargetType="Button" BasedOn="{StaticResource alignmentStyle}"/>
    <Style TargetType="TextBlock" BasedOn="{StaticResource alignmentStyle}"/>
</Grid.Resources>

如上所述,我们必须为每种类型明确设置Style,因为仅像FrameworkElement这样的基类型的设置不起作用。

如果你只有很少的元素,这可能不是很有帮助。或者你有很多元素,几乎各有不同的类型。