【问题标题】:Creating a grid with three equal columns stretched horizontally创建一个水平拉伸三个相等列的网格
【发布时间】:2015-05-27 08:04:26
【问题描述】:

我想定义一个具有三列和相同宽度的网格(这意味着每列的宽度是网格总宽度的 1/3)。并且 Grid 必须水平拉伸。

<Border Grid.IsSharedSizeScope="True">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition  Width="*" SharedSizeGroup="A"/>
                <ColumnDefinition  Width="*" SharedSizeGroup="A"/>
                <ColumnDefinition  Width="*" SharedSizeGroup="A"/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="A"/>
            <TextBlock Grid.Column="1" Text="B"/>
            <TextBlock Grid.Column="2" Text="C"/>
    </Border>

以上代码 xaml,三列具有相同的宽度,但网格没有水平拉伸。 谢谢你帮助我:>

【问题讨论】:

  • 您是否尝试在网格或边框上设置HorizontalAlignment="Stretch"?顺便说一句,SharedSizeGroup 在这里不起作用,如果您需要在多个网格之间“同步”列宽,则使用它们。
  • 如果您不想确保单独网格中的几列具有相同的宽度(如@vesan 所示),您可能会幸运地将 Grid 替换为 UniformGrid 例如...
  • @vesan,感谢您的支持,那么如何定义一个三列宽度相同且水平拉伸的网格?
  • @ScheuNZ,谢谢!它工作正常!

标签: wpf xaml


【解决方案1】:

给你。

将 Horizo​​ntalAlignment="Stretch" 添加到网格组件。

<Border>
    <Grid HorizontalAlignment="Stretch">
        <Grid.ColumnDefinitions>
            <ColumnDefinition  Width="*" SharedSizeGroup="A"/>
            <ColumnDefinition  Width="*" SharedSizeGroup="A"/>
            <ColumnDefinition  Width="*" SharedSizeGroup="A"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Text="A"/>
        <TextBlock Grid.Column="1" Text="B"/>
        <TextBlock Grid.Column="2" Text="C"/>
    </Grid>
</Border>

【讨论】:

  • 你确定你试过了吗?共享大小范围不会阻止这种工作 - TextBlock 对其内容的大小和大小范围确保它们都具有相同的小尺寸?
【解决方案2】:

使用UniformGrid 的简单解决方案:

<UniformGrid Columns="3" >
    <TextBlock Text="A"/>
    <TextBlock Text="B"/>
    <TextBlock Text="C"/>
</UniformGrid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多