使用Windows Phone 8.1应用程序,我希望将一些xaml呈现给图像文件。
从this page on the RenderTargetBitmap class开始,我的xaml似乎必须连接到可视树,因此我将该元素插入屏幕外。 在示例部分的上方,它表明了
•可以捕获XAML可视树中但在屏幕外的内容,只要它不是Visibility = Collapsed或其他受限制的情况。
所以我认为我很高兴...除了执行RenderAsync方法导致我的应用程序退出而不会触发任何异常。
编辑:我尝试像这样包装我的代码:
try
{
await renderTargetBitmap.RenderAsync(LiveTileSource);
}
catch (Exception e)
{
throw e;
}
通过在以await和throw开头的行上放置断点,我可以在我的应用程序中看到执行进入RenderAsync调用。然后应用程序可靠地退出而不会出现任何例外。
答案 0 :(得分:2)
MSDN文档在the RenderTargetBitmap page和the RenderTargetBitmap.RenderAsync page之间存在差异。
在第一页:
•可以捕获XAML可视化树中但在屏幕外的内容
在第二页:
•不会捕获XAML可视化树中但在屏幕外的内容
它似乎因访问冲突而无声地失败。
答案 1 :(得分:0)
不确定我的回答是否相关,但似乎您可以将LiveTileSource
放在画布中,将其放在屏幕外,这样就行了。这是我现在用于测试的示例代码:
var tileCanvas = new Canvas();
Canvas.SetLeft(LiveTileSource, Window.Current.Bounds.Right);
Canvas.SetTop(LiveTileSource, Window.Current.Bounds.Bottom);
tileCanvas.Children.Add(LiveTileSource);
page.Children.Add(tileCanvas);
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(LiveTileSource);
// ...
page.Children.Remove(tileCanvas);
这似乎不会引发访问冲突。