2012-10-06 8 views
5

私はそのサンプルの画像をロードするためにXAML Images sample projectとXAMLを見てきたが、次のようになりますWindows 8アプリケーション:イメージソースURLにms-appx:///を指定する必要があるのはなぜですか?

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

しかし、私自身のプロジェクトで、私はそのような任意の画像を読み込むことができないことがわかります。私が試みると、ImageFailedを処理するときにE_NETWORK_ERRORを取得します。その代わり、私は、MS-APPXを使用する必要があることを発見:このような///接頭辞:

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

は、その後、それは動作します。どのようなアイデアが私のプロジェクトとこれとは違うのですか?

+1

xamlはそれ自身のフォルダにありますか?イメージ参照は相対的なものなので、フォルダ内で起動する場合は、最初に '..'を実行しておく必要があります。 – mydogisbox

答えて

8

で文書化されて、あなたが "<Image Source="/Assets/image1.jpg>" を試したことがありますか?

+0

私のxamlファイルがサブディレクトリにあるからといっていました。私はパスが何らかの理由でプロジェクトルートに相対的であると仮定しました。私はダムです。 – Skrymsli

+11

あなたはダムではありません。エラーメッセージはひどいです。 – Tristan

1

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

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

また、これはHow to load file resources (XAML) (Windows)

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 
2

Mは、Windowsの携帯電話8に取り組んでいます。

OrderImage1.Source =新しいBitmapImage(新しいUri( "/// Assets/images/order_bread.png"));

関連する問題