public void ToggleCells(LightsOutCell clickedCell)
 {
     int row = clickedCell.Row, column = clickedCell.Column;
     //self
     clickedCell.Toggle();
     //up
     if (row - 1 >= 0)
         cellMatrix[row - 1, column].Toggle();
     //down
     if (row + 1 < Rows)
         cellMatrix[row + 1, column].Toggle();
     //left
     if (column - 1 >= 0)
         cellMatrix[row, column - 1].Toggle();
     //right
     if (column + 1 < Columns)
         cellMatrix[row, column + 1].Toggle();
 }
 private void InitializeCells()
 {
     for (var r = 0; r < Rows; r++)
         for (var c = 0; c < Columns; c++) {
             var cell = new LightsOutCell(r, c);
             Cells.Add(cell);
             cellMatrix[r, c] = cell;
         }
 }
 private void PushUndoCell(LightsOutCell cell)
 {
     undoStack.Push(cell);
     OnPropertyChanged("CanUndo");
 }