В WinRT C # как сохранить внеэкранное дерево XAML с помощью RenderTargetBitmap?

Следующий код выдает загадочное System.ArgumentException из метода RenderAsync «Значение не попадает в ожидаемый диапазон». С другой стороны, если мой Canvas является частью видимого дерева XAML, это работает. Разве невозможно отобразить какой-нибудь XAML, который не отображается на экране?

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);

Я почти думал, что этот ответ будет работать, но не повезло, я думаю, это относится только к WPF:Создать WPF-элемент вне экрана и рендерить в растровое изображение

ОБНОВИТЬ:

Пока что моя лучшая идея - поместить Canvas, на котором я хочу сделать рендеринг, на видимую в данный момент страницу, но расположить его под тем корневым UIElement, который заполняет экран, чтобы он не был виден пользователю:

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

Это не красиво, но, похоже, работает. Посмотрим, сможет ли кто-нибудь добиться большего

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

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