Не удалось захватить живую диаграмму WPF в растровом изображении
Я пытаюсь написать функцию, которая будет записывать результаты теста (которые имеют как текстовый вывод, так и вывод диаграммы, хранящиеся в текстовом поле и диаграмме livecharts соответственно) в файл pdf. С выводом текста проблем нет, но мне не удалось сохранить диаграммы, если я не извлекаю каждую диаграмму из родительской панели стека (у каждого теста есть панель стека, которая отображается при выборе теста), а затем отображаю график в отдельном окне. Вокруг проблемных строк много кода, поэтому ниже я вставлю сокращенную версию.
Проблема, похоже, вызывает "_saveWindow.Show()" вместо ".ShowDialog". Мне нужно, чтобы это открывалось и закрывалось без ввода пользователем, но «Show()» вообще не рисует диаграмму в окне.
Есть идеи, почему это происходит?
foreach (TestSequenceItem tsi in resultsToSave)
{
tsi.Instances[0].ChartStackPanel.Visibility = Visibility.Visible;
for (int i=0; i<tsi.Instances[0].StackChartList.Count; i++)
{
Chart _saveChart = tsi.Instances[0].StackChartList[i];
tsi.Instances[0].ChartStackPanel.Children.Remove(_saveChart);
ScrollViewer panel = new ScrollViewer { Content = _saveChart };
Window _saveWindow = new Window { Content = panel };
_saveWindow.Show();
var encoder = new PngBitmapEncoder();
RenderTargetBitmap bmp = new RenderTargetBitmap((int)tsiChartDoc.DefaultPageSetup.PageWidth, 600, 96, 96, PixelFormats.Pbgra32);
bmp.Render(_saveChart);
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (MemoryStream stm = new MemoryStream())
{
encoder.Save(stm);
string fileName = "base64:" + Convert.ToBase64String(stm.ToArray());
// Adding a heading to the pdf
tsiChartDoc.LastSection.AddParagraph(tsi.Instances[0].StackTitleList[i].Text, "Heading2");
tsiChartDoc.LastSection.AddImage(fileName);
}
_saveWindow.Close();
panel.Content = null;
tsi.Instances[0].ChartStackPanel.Children.Insert(chartIdx, _saveChart);
}
}