/// <summary> /// Отрисовка данных на графике /// </summary> public void Draw() { m_children.Clear(); ClearManagers(); DrawingVisual dv = null; var rowsI = Leasings.Select(l => l.RowIndex).Distinct().OrderBy(i => i); //отрисовка Layout'ов для строк графика if (m_rowLayoutM != null) { foreach (var i in rowsI) { dv = m_rowLayoutM.DrawRowLayout(i); if (dv != null) { m_children.Add(dv); } } } RedrawGrid(rowsI); //отрисовка прямоугольников и текста if (m_barM != null && m_textM != null) { foreach (var bm in Leasings) { dv = m_barM.DrawBar(bm); if (dv != null) { m_children.Add(dv); } dv = m_textM.DrawText(bm); if (dv != null) { m_children.Add(dv); } } } }
/// <summary> /// Перерисовка сетки /// </summary> public void RedrawGrid(IEnumerable <int> rowsI = null) { if (rowsI == null) { rowsI = Leasings.Select(l => l.RowIndex).Distinct().OrderBy(i => i); } //для случаев, когда меняется размер контрола, а сетка остаётся прежней if (m_gridM != null) { DrawingVisual dv = null; //отрисовка строк сетки foreach (var i in rowsI) { dv = m_gridM.DrawRow(i); if (dv != null) { if (!m_children.Contains(dv)) { m_children.Add(dv); //строки } } } //отрисовка колонок сетки var colCount = DayCount + 1; for (int i = 1; i < colCount; i++) { dv = m_gridM.DrawColumn(i); if (dv != null) { if (!m_children.Contains(dv)) { m_children.Add(dv); } } } } }