Utwórz element WPF poza ekranem i renderuj do mapy bitowej

Nie mogę zrozumieć, dlaczego to nie działa, lub co muszę zrobić, aby zadziałało.

Aby zreprodukować, utwórz prostą aplikację WPF i zastąp konstruktor głównego okna w ten sposób:

    public MainWindow()
    {
        InitializeComponent();

        // simple visual definition
        var grid = new Grid { Width = 300, Height = 300 };
        var text = new TextBlock 
                       { 
                         Text = "Y DON'T I WORK???", 
                         FontSize = 100, 
                         FontWeight = 
                         FontWeights.Bold 
                       };
        grid.Children.Add(text);

        // update the layout so everything is awesome cool
        grid.Measure(grid.DesiredSize);
        grid.Arrange(new Rect(grid.DesiredSize));
        grid.UpdateLayout();

        // create a BitmapSource from the visual
        var rtb = new RenderTargetBitmap(
                                    (int)grid.Width,
                                    (int)grid.Height,
                                    96,
                                    96,
                                    PixelFormats.Pbgra32);
        rtb.Render(grid);

        // Slap it in the window
        this.Content = new Image { Source = rtb, Width = 300, Height = 300 };
    }

Powoduje to pusty obraz. Jeśli zapiszę RTB na dysku jako PNG, ma on prawidłowy rozmiar, ale jest przezroczysty.

Jeśli jednak robię to za pomocą obrazu wyświetlanego na ekranie, działa dobrze.

Jak mogę wyrenderować wizualną konstrukcję ekranową bitmapy?

questionAnswers(1)

yourAnswerToTheQuestion