在运行时更改UniformGrid子项

时间:2017-08-30 16:46:30

标签: c# wpf

我目前正在尝试在WPF中填充UniformGrid。

某些情况:我正在尝试构建2D Sidescroller(我知道,WPF不是最好的解决方案,我应该使用Unity或其他东西。我想尝试一下)。现在,对于地图,我正在考虑使用UniformGrid并将子项用作我的地图的图块。

到目前为止,我使用这段代码将空子项添加到UniformGrid:

private void CreateMapTiles() {
    for (int i = 0; i < 30; i++) {
        for (int j = 0; j < 45; j++) {
            this.MapGrid.Children.Add(new Image());
        }
    }
}

MapGrid是我的UniformGrid。

所以,最后,我希望有30x45个孩子。 现在我想在CodeBehind中动态编辑这些孩子,即让这些孩子成为一个图像。换句话说,我想要更新,让我们说,索引5处的孩子显示我的资源中的另一个图像,而不是之前的图像。

我在考虑使用这样的东西:

this.MapGrid.Children[1] = new Image() { Source = ReturnSomeSource() };

但由于显而易见的原因,这不起作用。

有什么办法可以在运行时为孩子们分配一个值吗? 我曾经和this.MapGrid.Children[1].SetCurrentValue()玩了一下,但我也没有真正理解我在做什么,也没有以任何方式工作。

在运行时更改UniformGrid子节点是否存在可能性? 普通电网会做得更好吗?我想避免这种情况,因为UniformGrid的孩子会按照我需要的方式自动排列和调整大小。

1 个答案:

答案 0 :(得分:0)

不要将Image替换为新的Image,而是更改现有图片上的来源。

var tileImage = this.MapGrid.Children[1] as Image; 
tileImage.Source = ReturnSomeSource();