我一直在查看XAML Images sample project和XAML来加载该示例中的图像,如下所示:
<Image Source="Assets/image1.jpg"/>
然而,在我自己的项目中,我发现我无法加载任何类似的图像。如果我尝试在处理ImageFailed时获得E_NETWORK_ERROR。相反,我发现我必须像这样使用ms-appx:///前缀:
<Image Source="ms-appx:///Assets/image1.jpg"/>
然后它有效。有什么想法,我的项目与导致这个问题的样本有什么不同?
答案 0 :(得分:10)
您是否尝试过“<Image Source="/Assets/image1.jpg>
”?
答案 1 :(得分:2)
我在Windows手机8上工作时使用了这个。
OrderImage1.Source = new BitmapImage(new Uri(&#34; /// Assets / images / order_bread.png&#34;));
答案 2 :(得分:1)
This behavior works - 在Windows 8 RTM / Visual Studio 2012 RTM中测试,可以确认不需要ms-appx://前缀。你使用什么构建?
您可能存在设置图像的方式或正在为其选择的构建操作的问题。
中有记录答案 3 :(得分:1)
对于声明性图像,您不需要ms-appx命名空间(在XAML中声明的图像)。对于动态数据绑定图像,会创建一个新的位图实例,它需要此命名空间。
解决此问题的一个好方法是从实现命名空间的基础对象派生数据对象作为共享属性:
Private Shared _baseUri As New Uri("ms-appx:'''")
'//image handling
Private _image As ImageSource
Private _imagePath As String
Public Property Image As ImageSource
Get
If Me._image Is Nothing AndAlso Me._imagePath IsNot Nothing Then
Me._image = New BitmapImage(New Uri(dataModelBase._baseUri, Me._imagePath))
End If
Return Me._image
End Get
Set(value As ImageSource)
Me._imagePath = Nothing
Me.SetProperty(Me._image, value)
End Set
End Property