StorageFile に保存されている画像のコンテンツをバインディングを介して表示したいのですが、何をしようとしてもうまくいかないようです。
私がすでにテストした2つのソリューションは次のとおりです。
string img =( await CompetencesFolder.GetFileAsync(FormatImageNameToFileName(imageName))).Path;
そして、取得したパス (ファイルへの完全な絶対パス) をバインディングを通じてソース プロパティに返します。
BitmapImage img = await LoadImage(await CompetencesFolder.GetFileAsync(FormatImageNameToFileName(imageName)));
private static async Task<BitmapImage> LoadImage(StorageFile file)
{
BitmapImage bitmapImage = new BitmapImage();
FileRandomAccessStream stream = (FileRandomAccessStream)await file.OpenAsync(FileAccessMode.Read);
bitmapImage.SetSource(stream);
return bitmapImage;
}
後で最終的な bitmapImage をバインドされたプロパティに返します。
これらの方法はどれも機能しません..
誰にもアイデアはありますか?
編集:修正
問題を解決したコードは次のとおりです。
BitmapImage img = new BitmapImage() { UriSource = new Uri( LOCAL_REPOSITORY.Path + "/Assets/gfx/cards/" + FormatImageNameToFileName(imageName) + ".jpg", UriKind.RelativeOrAbsolute) };
上記の 2 つのサンプルを組み合わせて作成しました: 画像の絶対 URI から bitmapImage を作成しました (LOCAL_REPOSITORY にはローカル ストレージへの参照が含まれていますApplicationData.Current.LocalFolder
:)
他の2つの方法が失敗した理由をまだ理解できません.通常、画像をUri、文字列、またはBitmapImageに直接バインドします..