使用C#将网格添加到wpf窗口

时间:2015-02-18 08:10:00

标签: c# wpf

我想在我的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];

但它让我所能显示的只是其中之一,因为每次循环再次执行该代码时它会覆盖最后一个

4 个答案:

答案 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。 如果你没有得到我的意思,那很简单,我想在一个数组中创建一个多个网格控件并将它们添加到我的窗口。