Я пытаюсь сделать небольшую игру на C # с использованием WPF. В одном из моих Modelclasses у меня есть Map, которая представляет собой 2D-массив, заполненный объектами Enumeration. Каждый из этих объектов представляет тип плитки.
В моем представлении эти плитки должны быть преобразованы в изображение, а для изображения должны быть установлены правильные координаты в сетке.
Как связать массив с сеткой или изображениями в представлении, чтобы он автоматически обновлялся при изменении массива?
Вот как это работает сейчас:
Перечисление, используемое для заполнения массива:
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>
А вот скриншот того, как это выглядит: