在网格内填充矩形
Fill a Rectangle inside a Grid
我在 WPF 中创建了一个 Grid,里面有矩形,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);
}
}
但是这 returns 每次迭代时行的值为 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] 元素的 属性。
如何更改各个矩形的颜色?谢谢!
填充是 属性 的矩形。您已经为矩形命名。将返回的 child 转换为 Rectangle.
例如;
Rectangle r = new Rectangle();
r.Fill = new SolidColorBrush(Colors.BlanchedAlmond);
//
Rectangle rectangle = (Rectangle)grid1.Children[i];
rectangle.Fill = new SolidColorBrush(Colors.Magenta);
我在 WPF 中创建了一个 Grid,里面有矩形,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);
}
}
但是这 returns 每次迭代时行的值为 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] 元素的 属性。
如何更改各个矩形的颜色?谢谢!
填充是 属性 的矩形。您已经为矩形命名。将返回的 child 转换为 Rectangle.
例如;
Rectangle r = new Rectangle();
r.Fill = new SolidColorBrush(Colors.BlanchedAlmond);
//
Rectangle rectangle = (Rectangle)grid1.Children[i];
rectangle.Fill = new SolidColorBrush(Colors.Magenta);