private void CompleteCells() { var capacity = ViewerControl.LayoutManager.RootCell.DisplayCapacity; var currentCellCount = ViewerControl.CellCount; var deltaCellCount = capacity - currentCellCount; if (deltaCellCount == 0) { return; } // cell count is less // TODO-later: New FilmingControlCell(), not smell good var cells = new List <FilmingControlCell>(); for (var i = 0; i < deltaCellCount; i++) { cells.Add(new FilmingControlCell()); } ViewerControl.AddCells(cells); // cell count is more, not move, for performance conside ( ViewerControl only have interface to remove a cell, then refresh ) // Register CellImpl.MouseDown Event for (var i = 0; i < deltaCellCount; i++) { var cellImpl = cells[i].Control; Debug.Assert(cellImpl != null); cellImpl.MouseDown -= CellImplOnMouseDown; cellImpl.MouseDown += CellImplOnMouseDown; } }