我正在尝试使用WPF在C#中制作一个小游戏。在我的一个Modelclasses中,我有一个Map,它是一个用Enumeration对象填充的2D数组。这些对象中的每一个都代表一种瓦片。
在我的视图中,这些平铺需要转换为图像,并且图像需要设置为网格中的右侧坐标。
如何将数组绑定到网格或视图中的图像,以便在数组更改时自动更新?
现在这是如何运作的:
用于填充数组的枚举:
public enum Tile { FLOOR, WALL, DESTINATION, EMPTY }
创建和定位所有图像的方法(这在代码隐藏中):
public void LoadMap(Map mapModel)
{
Tile[,] tiles = mapModel.TileMap;
int nRows = tiles.GetLength(1);
int nCols = tiles.GetLength(0);
for (int i = 0; i < nCols; i++)
{
ColumnDefinition col = new ColumnDefinition();
map.ColumnDefinitions.Add(col);
}
for (int i = 0; i < nRows; i++)
{
RowDefinition row = new RowDefinition();
map.RowDefinitions.Add(row);
}
for (int y = 0; y < nCols; y++)
{
for (int x = 0; x < nRows; x++)
{
Image img = new Image();
switch (tiles[y, x])
{
case Tile.FLOOR:
img.Source = _srcFloor;
break;
case Tile.WALL:
img.Source = _srcWall;
break;
case Tile.DESTINATION:
img.Source = _srcDestination;
break;
case Tile.EMPTY:
img.Source = _srcEmpty;
break;
}
img.SetValue(Grid.ColumnProperty, x);
img.SetValue(Grid.RowProperty, y);
map.Children.Add(img);
}
}
}
XAML:
<Grid Name="map">
</Grid>
以下是它的外观截图: