给定的System.Uri无法转换为Windows.Foundation.Uri

Joe*_*ite 29 windows-8 windows-runtime

我正在尝试以编程方式在XAML Metro应用程序中加载BitmapImage.这是我的代码:

var uri = new Uri("/Images/800x600/BackgroundTile.bmp", UriKind.RelativeOrAbsolute);
var imageSource = new BitmapImage(uri);
Run Code Online (Sandbox Code Playgroud)

第二行崩溃与System.ArgumentException:

给定的System.Uri无法转换为Windows.Foundation.Uri.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=215849.

该链接只是进入MSDN主页,所以没用.

我也尝试删除前导/,以防WinRT对相对URI有不同的期望,但我仍然得到相同的异常.

为什么我会为看似完全有效的URI获取此异常?

San*_*der 33

在Consumer Preview中,正确的URL格式显然已更改为 ms-appx:/Images/800x600/BackgroundTile.bmp


Joe*_*ite 17

Windows.Foundation.Uri文档来看,看起来WinRT不支持相对URI.我尝试了一个pack://URI,但这给了我一个UriFormatException,所以显然在WinRT中也不是这样做的.

我在这个帖子上找到了答案:MS 为WinRT资源发明了另一种 URI格式.这有效:

new Uri("ms-resource://MyAssembly/Images/800x600/BackgroundTile.bmp")
Run Code Online (Sandbox Code Playgroud)

请注意,您不添加实际的程序集名称 - 该MyAssembly部分是文字文本.