在网格内填充矩形

时间:2015-11-26 17:54:35

标签: c# wpf grid rectangles stackpanel

我在WPF中创建了一个内部带有矩形的网格,XAML是以下一个:

<Grid HorizontalAlignment="Left" Name="grid1" VerticalAlignment="Top" Initialized="grid1_Initialized">
    <Rectangle Height="300" HorizontalAlignment="Left" Margin="228,120,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="40" Fill="Red" />
    <Rectangle Fill="OrangeRed" Height="300" HorizontalAlignment="Left" Margin="268,120,0,0" Name="stackPanel2" VerticalAlignment="Top" Width="40" />
    <Rectangle Fill="Orange" Height="300" HorizontalAlignment="Left" Margin="308,120,0,0" Name="stackPanel3" VerticalAlignment="Top" Width="40" />
    ...
</Grid>

(只需忽略名称stackPanel1,stackPanel2,......,它们现在是矩形)。

我想要做的是分配填充颜色,但我无法访问它们。我试过的是:

foreach (var stackpanl in mainGrid.Children.OfType<StackPanel>())
{
     int row = Grid.GetRow(rectangle);

     if (Grid.GetRow(stackpanl) < 2)
     {
          stackpanl.Background = new SolidColorBrush(Colors.Blue);                    
     }
}

但是这会在每次迭代时为行返回值0。

我也尝试过:

for(int i = 0; i < 15 ; i++)
        {
            var rectangle = grid1.Children[i];
            int row = Grid.GetRow(rectangle);
            if (row == 2)
            {
                rectangle.Fill = new SolidColorBrush(Colors.Magenta);
            }
        }

但显然Fill不是关于grid1.Children [i]元素的属性。

如何更改单个矩形的颜色?谢谢!

1 个答案:

答案 0 :(得分:0)

Fill是Rectangle的一个属性。您已经为Rectangles指定了名称。将返回的子项转换为Rectangle。

例如

Rectangle r = new Rectangle();
r.Fill = new SolidColorBrush(Colors.BlanchedAlmond);

//

Rectangle rectangle = (Rectangle)grid1.Children[i];
rectangle.Fill = new SolidColorBrush(Colors.Magenta);