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

宣言型のイメージの場合、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 に答える
1

この動作は動作します- Windows 8 RTM / Visual Studio 2012 RTM でテストされ、ms-appx:// プレフィックスが不要であることを確認できます。どのビルドを使用していますか?

イメージの設定方法またはイメージに対して選択しているビルド アクションに問題がある可能性があります。

また、これはHow to load file resources (XAML) (Windows) にも記載されています。

于 2012-10-06T22:21:02.073 に答える