我想在我的WPF窗口中添加一个网格数组:
Grid[] Tiles = new Grid[20];
public void LoadTile()
{
for (int X = 0; X < Tiles.Length; X++)
{
Tiles[X] = new Grid();
Tiles[X].Height = (TileData[X].SizeY * 90) - 10;
Tiles[X].Width = (TileData[X].SizeY * 90) - 10;
Tiles[X].Margin = new Thickness(0 + (TileData[X].PositionX * 90), 216 + (TileData[X].PositionY * 90), 0, 0);
Tiles[X].HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
Tiles[X].VerticalAlignment = System.Windows.VerticalAlignment.Center;
Tiles[X].Visibility = System.Windows.Visibility.Visible;
SolidColorBrush Brush1 = new SolidColorBrush(Colors.Black);
Brush1.Opacity = 0.2;
Tiles[X].Background = Brush1;
}
}
这就是我所拥有的。
(顺便说一句:我确实有一种方法叫做我刚才没有把它包括在内)
我补充说:
Nine_Window.Content = Tiles[X];
但它让我所能显示的只是其中之一,因为每次循环再次执行该代码时它会覆盖最后一个
答案 0 :(得分:1)
您对网格的常用用法(让我们假设为3x3)将在XAML中显示以下内容:
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
关于设置内容的问题,您将其设置为特定的磁贴而不是数组。但同样,我相信它很容易从XAML中完成,如果需要,只需从代码初始化它。
答案 1 :(得分:0)
我认为您实际需要的是网格的行和列定义。通过执行以下内容添加所需数量:
Grid Tile = new Grid()
// create new columns
ColumDefintion columnDefinition = new ColumnDefinition()
columnDefinition.Height = ... // set height here
Tile.ColumnDefinitions.Add(columnDefinition);
// create a row
Tile.RowDefinitions.Add(new RowDefinition());
否则您的更改将影响整个网格对象。
答案 2 :(得分:0)
嗯,我不赞成你的方法,但如果你想继续它,不要像这样添加你的网格
Nine_Window.Content = Tiles[X];
而是将stackPanel添加到NineWindow.Content
<Window ....>
<Grid>
<StackPanel x:Name="myStackPanel"></StackPanel>
</Grid>
然后在代码中
myStackPanel.Children.Add(Tile[X]);
答案 3 :(得分:0)
好吧,Muds几乎得到了答案,但我要使用Canvas而不是Stack Panel。 如果你没有得到我的意思,那很简单,我想在一个数组中创建一个多个网格控件并将它们添加到我的窗口。