在后面的代码中将图像插入网格

时间:2014-07-15 04:18:12

标签: c# wpf

我发现了很多关于如何在XAML文件中手动添加东西的教程,但我正在制作的网格是一个15x15的怪物,需要插入100多个图像。我希望有一些访问器允许我使用循环在代码隐藏文件中添加一个图像。

<Grid Name="ScrabbleBoard">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
</Grid>

2 个答案:

答案 0 :(得分:1)

您需要使用Grid::Children属性来添加图像元素。然后使用Grid.SetRow(element, rowIndex) / element.SetValue(Grid.RowProperty, rowIndex)Grid.SetColumn(element, columnIndex) / element.SetValue(Grid.ColumnProperty, columnIndex)

设置元素的行和列
for (int rowIndex = 0; rowIndex < ScrabbleBoard.RowDefinitions.Count; rowIndex++)
{
    for (int columnIndex = 0; columnIndex < ScrabbleBoard.ColumnDefinitions.Count; columnIndex++)
    {
        var imageSource = new BitmapImage(new Uri("pack://application:,,,/YourProjectName;component/YourImagesFolderName/YourImageName.jpg"));
        var image = new Image { Source = imageSource };
        Grid.SetRow(image, rowIndex);
        Grid.SetColumn(image, columnIndex);
        ScrabbleBoard.Children.Add(image);
    }
}

答案 1 :(得分:0)

由于您没有跨越或控制宽度/高度,因此使用均匀网格控件会更简单。这会将子项添加到下一个单元格中,因此可以使用foreach循环覆盖图像集。