//обработчик события окончания сортировки private void Sorting_OnSortingEndedEvent(InfoCalculating obj) { Dispatcher.InvokeAsync(() => { //не советую использовать большие объемы списка для сортировки!!! ResultInfoCalculatingPanel.DataContext = obj; //выводим результат сортировки в ResultInfoCalculatingPanel GraphicContainer graphicContainer = new GraphicContainer(); //создаем контэйнер для графиков Graphic graphic1 = new Graphic(Container.Length); //этот график в итоге будет представлять из себя прямую //еще один пример использования params, здесь мы указываем, graphic1.AddRangeXCoordinates(0, obj.CountElements); //следовательно здесь мы переадаем 2 точки по оси Х graphic1.AddRangeYCoordinates(0, obj.TimeSorting); //а здесь по оси У, чтобы построить прямую, необходимо 2 точки минимум ParabolaGraphic parabola = new ParabolaGraphic(Container.Length); //создаем параболу parabola.Fill(); //заполняем значениями graphicContainer.ListGraphics.Add(graphic1); //добавялем в список созданный график graphicContainer.ListGraphics.Add(parabola); //добавляем прямую GraphImage.Source = graphicContainer.DrawingGraphic(); //источнику указываем результат отрисовки графика }); }