2015-11-26 19 views
0

Я создал сетку в 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, ..., они» re теперь прямоугольники).

Что я хочу сделать, это назначить цвет заливки, но я не могу получить к ним доступ. Я пробовал:

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); 
      } 
     } 

Но, видимо Наполните не является свойством в отношении к grid1.Children [я] элемент.

Как изменить цвет отдельных прямоугольников? Благодаря!

ответ

0

Fill является собственностью Rectangle. Вы уже дали имена Rectangles. Перенесите возвращаемого ребенка в Rectangle.

eg;

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

//

Rectangle rectangle = (Rectangle)grid1.Children[i]; 
rectangle.Fill = new SolidColorBrush(Colors.Magenta); 
Смежные вопросы