您好我正在尝试使用以下代码
在WPF中创建10 x 10矩阵private void MainGrid_Loaded(object sender, RoutedEventArgs e)
{
MainGrid.RowDefinitions.Add(new RowDefinition());
MainGrid.ColumnDefinitions.Add(new ColumnDefinition());
//Create rectangle
Rectangle rect = new Rectangle();
rect.Width = 10;
rect.Height = 10;
for (int i = 0; i < 10; i++) // for rows
{
for (int j = 0; j < 10; j++) //for columns
{
if (i % 2 == 0 || j % 2 == 0)
{
rect.Stroke = Brushes.Green;
rect.Fill = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255,255,0,0));
}
else
{
rect.Stroke = Brushes.DarkOrchid;
rect.Fill = new SolidColorBrush(System.Windows.Media.Color.FromArgb(200, 204, 10, 20));
}
Grid.SetColumn(rect, j);
}
Grid.SetRow(rect, i);
}
MainGrid.Children.Add(rect);
}
xaml定义为
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid x:Name="MainGrid" Loaded="MainGrid_Loaded">
</Grid>
</Window>
但它只显示了一个矩形。
我做错了什么..请帮忙
由于
答案 0 :(得分:1)
您需要在循环中创建新的矩形,而不仅仅是一次。
private void MainGrid_Loaded(object sender, RoutedEventArgs e)
{
//Add rows and columns.
for (int i = 0; i < 10; i++)
{
//Add row.
MainGrid.RowDefinitions.Add(new RowDefinition());
//Add column.
MainGrid.ColumnDefinitions.Add(new ColumnDefinition());
}
for (int i = 0; i < 10; i++) // for rows
{
for (int j = 0; j < 10; j++) //for columns
{
//Create rectangle
Rectangle rect = new Rectangle();
rect.Width = 10;
rect.Height = 10;
if (i % 2 == 0 || j % 2 == 0)
{
rect.Stroke = Brushes.Green;
rect.Fill = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255,255,0,0));
}
else
{
rect.Stroke = Brushes.DarkOrchid;
rect.Fill = new SolidColorBrush(System.Windows.Media.Color.FromArgb(200, 204, 10, 20));
}
Grid.SetRow(rect, i);
Grid.SetColumn(rect, j);
MainGrid.Children.Add(rect);
}
}
}
答案 1 :(得分:0)
您的Grid
只有1行1列。您必须在Grid
中定义10行和10列。
此外,您只有一个Rectangle
,您可以将颜色更改为100次。您必须将new Rectangle()
,SetRow
,SetColumn
和Add
置于内部循环中才能实现此目的。
答案 2 :(得分:0)
请注意,在这些情况下,当您在网格中需要相同大小的单元格时,方式更容易使用UniformGrid而不是Grid。 它的性能也更好。