Wie speichere ich in WinRT C # einen Offscreen-XAML-Baum mit RenderTargetBitmap?

Der folgende Code löst eine kryptische System.ArgumentException aus der RenderAsync-Methode aus "Wert liegt nicht im erwarteten Bereich." Wenn mein Canvas Teil eines sichtbaren XAML-Baums ist, funktioniert es. Ist es unmöglich, XAML-Dateien zu rendern, die nicht auf dem Bildschirm angezeigt werden?

Canvas c = new Canvas();
c.Width = 40;
c.Height = 40;
c.Background = new SolidColorBrush(Color.FromArgb(0xff, 0x80, 0xff, 0x80));

RenderTargetBitmap x = new RenderTargetBitmap();
await x.RenderAsync(c);

Ich hätte fast gedacht, dass diese Antwort funktionieren würde, aber kein Glück, ich denke, es gilt nur für WPF:Erstellen Sie ein WPF-Element außerhalb des Bildschirms und rendern Sie es als Bitmap

AKTUALISIEREN:

Bisher ist es meine beste Idee, den Canvas-Bereich, den ich rendern möchte, auf die aktuell sichtbare Seite zu setzen, ihn jedoch unter das normalerweise den Bildschirm ausfüllende Root-UIElement zu platzieren, damit er für den Benutzer nicht sichtbar ist:

<Grid>
    <Canvas x:Name="HiddenCanvas"/>
    <Grid x:Name="mainElement" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    </Grid>
</Grid>

Es ist nicht schön, aber es scheint zu funktionieren. Mal sehen, ob es jemand besser machen kann

Antworten auf die Frage(2)

Ihre Antwort auf die Frage