/// <summary> /// Add new row of cell view models that corresponds to /// rowNumber row in data model. /// </summary> /// <param name="rowNumber">Number of row in data model.</param> private void CreateCellViewModelRow(int rowNumber) { _logger.Log($"Create {rowNumber} row of cells"); var row = new ObservableCollection <ICellViewModel>(); for (var x = 0; x < GridWidth; x++) { var cellViewModel = new CellViewModel(CellSet.GetCell(x, rowNumber)); row.Add(cellViewModel); } _logger.Log($"{rowNumber} row of cells is ready for rendering"); Cells.Add(row); }
/// <summary> /// Create 2-dimensional array of cells. /// </summary> /// <returns></returns> private ObservableCollection <ObservableCollection <ICellViewModel> > CreateCells() { var cells = new ObservableCollection <ObservableCollection <ICellViewModel> >(); for (var posRow = 0; posRow < GridHeight; posRow++) { var row = new ObservableCollection <ICellViewModel>(); for (var posCol = 0; posCol < GridWidth; posCol++) { var cellViewModel = new CellViewModel(Cell.Empty); row.Add(cellViewModel); } cells.Add(row); } return(cells); }
/// <summary> /// Add or remove cell view models to the row. /// </summary> /// <param name="rowNumber">Number of row in data model.</param> private void UpdateCellViewModelRow(int rowNumber) { var row = Cells[rowNumber]; // delete extra cells while (row.Count > GridWidth) { row.RemoveAt(GridWidth); } for (var pos = 0; pos < GridWidth; pos++) { // create new ViewModel or update existent one var cell = CellSet.GetCell(pos, rowNumber); if (pos < row.Count) { row[pos].Cell = cell; } else { var cellViewModel = new CellViewModel(cell); row.Add(cellViewModel); } } }