如何在整个网格上绘制矩形?

时间:2009-11-08 14:48:46

标签: .net wpf xaml

我正在构建一个小型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>

现在,我尝试将矩形填充设置为拉伸,我已将grid.columnspan和grid.rowspan设置为2.我已尝试将矩形放置在视图框中。什么都行不通。

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

提前Thanx!

1 个答案:

答案 0 :(得分:5)

首先,在Grid.ColumnSpan="2"上设置Grid.RowSpan="2"Rectangle。如果您希望它跨越整个网格,则需要执行此操作。

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

第三,直到你在Grid中放置东西,你才会看到任何东西,因为它没有高度。如果您只想确保正确显示背景Rectangle,请暂时将Grid设为Height="200"或其他内容。