WPF Instantiate User control программно, чтобы отобразить его как PNG

Я хочу создать экземпляр пользовательского элемента управления программно в DLL, чтобы впоследствии сохранить его в виде файла PNG. Обычно это не проблема с PngBitmapEncoder и RenderTargetBitmap.

Это мои вопросы:

Как мне создать экземпляр управления? Просто с новым оператором?Должен ли я создавать его в отдельном потоке?Как заставить элемент управления обновить все его дочерние элементы и снова отобразить себя?

Это мой код для создания пользовательского элемента управления и сохранения его в виде PNG-файла (пользовательский элемент управления LetterFrequency):

    [STAThread]
    static void Main(string[] args)
    {
        LetterFrequency let = new LetterFrequency();
        let.Width = 600;
        let.Height = 400;
        let.Background = Brushes.White;

        let.Measure(new Size(let.Width, let.Height));
        let.Arrange(new Rect(new Size(let.Width, let.Height)));

        let.UpdateLayout();

        RenderTargetBitmap bitmap = new RenderTargetBitmap((int)let.Width, (int)let.Height, 96d, 96d, PixelFormats.Pbgra32);
        bitmap.Render(let);

        PngBitmapEncoder png = new PngBitmapEncoder();
        png.Frames.Add(BitmapFrame.Create(bitmap));

        using (Stream stm = File.Create("test.png"))
        {
            png.Save(stm);
        }
    }

Если вы запустите приложение таким образом, оно создаст файл PNG, но данные, которые будут добавлены в XAML, не будут видны. Если вы загляните в XAML Designer, вы увидите диаграмму с несколькими пузырьками. Файл PNG содержит только область диаграммы, но без пузырьков? Почему так? Я думаю, что это проблема обновления / рендеринга, но как решить эту проблему?

Вот решение Visual Studio, оно содержит Console Project, который отображает пользовательский элемент управления в файл PNG и два других проекта WPF-инструментария для диаграммы.

Посмотрите на это, он сгенерирует файл PNG в bin / Debug соответственно в exe-папке:http://www.file-upload.net/download-1904406/ChartRenderBitmap.zip.html

Надеюсь, это работает без проблем!

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос