WPF Imageにローカルファイルを指定したいだけなんです

XAMLでImage指定

WPF Imageにアプリケーションと同じ階層にあるjpgファイルを表示したいのですが、なかなかうまくいきません。

https://msdn.microsoft.com/ja-jp/library/windows/apps/windows.ui.xaml.controls.image.source

基になる型変換に依存します。XAML パーサーは、解析している XAML ページのベース URI を使用して、相対 URI を表すすべての文字列を解釈します。たとえば、XAML で値 “Images/myimage.png” を指定した場合、その文字列は、XAML ページ自体が存在するアプリケーション パッケージ内のベース URI の場所に追加される相対パスのサフィックスとして解釈されます。

と書いてあるので、そのままアプリケーションと同じフォルダにjpgファイルを入れてしてすれば表示されそうなのですが、

これ表示されないんです。

プロジェクトフォルダと同じ階層

実行環境でDebugビルド

プロジェクトファイル(.csprojがあるフォルダ)と同じフォルダにoshirase.jpgを配置したら表示されるようになりました。

ところがですよ、今度はビルドした実行ファイルを直接実行するとoshirase.jpgは表示されないんです。

試しにプログラム実行フォルダと同じフォルダに入れてみましたけどやっぱり表示されません。

コードビハインドで実現

結局実力がない私はC#コードでゴニョゴニョやる事に

これで実現できました。

実行ファイルがあるディレクトリを取得

System.AppDomain.CurrentDomain.BaseDirectory

同じフォルダに

oshirase.png

を配置して表示できました。

はまりポイント

このようにしたら

また、表示できなくなります。

UriKind.Relative これは相対Uri

ちゃんとオプション調べましょ。

https://msdn.microsoft.com/ja-jp/library/system.urikind(v=vs.110).aspx

絶対Uriなら表示

じゃ、相対でそのまま表示できんじゃない?

相対Uriで試験

めぐりめぐってこのように書いてみたけどやっぱりだめ

VisualStudioからデバッグビルドだからだめなのかなと疑い、実行ファイルを直接たたいてみたけどダメでした。

XAMLだけでできんものか?

XAMLだけで、カレントディレクトリにあるjpegファイルを表示できそうなものですよね?何か方法があるはずですが探しきれませんでした。一応、コードビハインドでやりたいことは実現できたので、今回はここまで。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です