/// <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 <TCellViewModel>(); for (var x = 0; x < GridWidth; x++) { var cellViewModel = CreateCellViewModel(CellSet.GetCell(x, rowNumber)); row.Add(cellViewModel); } Logger.Log($"{rowNumber} row of cells is ready for rendering"); Cells.Add(row); }
/// <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 = CreateCellViewModel(cell); row.Add(cellViewModel); } } }