我目前正在尝试在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的孩子会按照我需要的方式自动排列和调整大小。
答案 0 :(得分:0)
不要将Image
替换为新的Image
,而是更改现有图片上的来源。
var tileImage = this.MapGrid.Children[1] as Image;
tileImage.Source = ReturnSomeSource();