【问题标题】:How can I make rectangle strech across entire grid?如何使矩形在整个网格中延伸?
【发布时间】:2009-11-08 14:48:46
【问题描述】:

我正在构建一个小型 WPF 应用程序。对于应用程序中的布局,我使用具有两列和两行的网格。我想要一个填充整个应用程序的背景矩形,并且我希望背景矩形伸展,因此如果用户调整窗口大小,矩形伸展并始终填充整个窗口。所以在我的网格中,我定义了一个矩形,如下所示:

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Rectangle x:Name="BackgroundRect" Fill="Stretch">
            <Rectangle.Fill>
                <RadialGradientBrush GradientOrigin="0.485,0.2" Center="0.492,0.526">
                    <GradientStop Color="#FF3C3C3E" Offset="1"/>
                    <GradientStop Color="#FF84897D"/>
                </RadialGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
</grid>

现在,我尝试将矩形 Fill 设置为 strech,将 grid.columnspan 和 grid.rowspan 设置为 2。我尝试将矩形放置在视图框内。没有任何效果。

有人知道如何让矩形填满整个窗口吗?

提前谢谢!

【问题讨论】:

  • 您在 Rectangle 上定义了两次 Fill 属性(一次作为属性,然后作为子元素)只是一个错字吗?
  • 请注意,面板确实有一个Background 属性,因此,如果最终目标是在 Grid 中设置背景而不对 Rectangle 执行任何其他操作,那么您可以简单地设置 Grid.Background使用 RadialGradientBrush。

标签: .net wpf xaml


【解决方案1】:

首先,在您的Rectangle 上设置Grid.ColumnSpan="2"Grid.RowSpan="2"。如果您希望它跨越整个 Grid,您需要这样做。

其次,由于您已将 Column/RowDefinition Width/Heights 设置为 Auto,因此现在不会显示任何内容,因为您在这些列/行中没有内容可以自动调整它们的大小(也许您只是为了样本?)。您应该做的是将其中一列设置为Width="*",将其中一行设置为Height="*",基本上说:“用此列/行填充水平/垂直空间的其余部分”。

第三,除非你在Grid 中放一些东西,否则你不会看到任何东西,因为它没有高度。如果您只是想确保您的背景 Rectangle 能够正常显示,请暂时给 Grid 一个 Height="200" 或其他内容。

【讨论】:

  • 谢谢!这是对我的问题的一个很好的回答。现在它完全按照我的意愿工作了!
猜你喜欢
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2018-01-27
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多