5

我一直在查看XAML 图像示例项目,并且在该示例中加载图像的 XAML 如下所示:

<Image Source="Assets/image1.jpg"/>

但是,在我自己的项目中,我发现我无法加载任何这样的图像。如果我尝试在处理 ImageFailed 时得到 E_NETWORK_ERROR。相反,我发现我必须像这样使用 ms-appx:/// 前缀:

<Image Source="ms-appx:///Assets/image1.jpg"/>

然后它工作。任何想法我的项目与导致这种情况的样本有什么不同?

4

4 回答 4

10

你试过“ <Image Source="/Assets/image1.jpg>”吗?

于 2012-10-06T22:33:31.103 回答
2

我在 Windows phone 8 上工作的 M 使用了这个。

OrderImage1.Source = new BitmapImage(new Uri("///Assets/images/order_bread.png"));

于 2013-01-11T07:00:08.940 回答
1

此行为有效- 在 Windows 8 RTM / Visual Studio 2012 RTM 中测试,并且可以确认不需要 ms-appx:// 前缀。你使用的是什么版本?

您如何设置图像或为它选择的构建操作可能存在问题。

此外,这也记录在如何加载文件资源 (XAML) (Windows)

于 2012-10-06T22:21:02.073 回答
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
于 2012-10-06T22:39:27.000 回答