<FlipView x:Name="flipView1"">
<FlipView.ItemTemplate>
<DataTemplate>
<Image>
<Image.Source>
<BitmapImage UriSource="{Binding PicFiles}" />
</Image.Source>
</Image>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
と分離コード、上記のコードは推奨されない、アクセスするためにファイルの完全なファイル・システム・パスのプロパティを取得します。相対APIのStoragFile
を使用できます。詳細はSkip the path: stick to the StorageFileを参照してください。 QueryOptions
は、状況に応じたフィルタリングに使用できます。
第2に、UriSource
プロパティへのフルファイルシステムパス値を指定しても機能しません。アプリデータに格納されているファイルにアクセスするには、スキームでUri
を使用する必要があります。参照できる詳細はHow to load file resources (XAML)です。
最後に、バインディングが正しい方法ではなく、コレクション全体をUriSource
プロパティにバインドしていますが、実際にはコレクションの値はUri
です。
だから更新され、完全なコードスニペットは、次のように背後
<FlipView x:Name="flipView1" >
<FlipView.ItemTemplate>
<DataTemplate>
<Image >
<Image.Source>
<BitmapImage UriSource="{Binding}" />
</Image.Source>
</Image>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
コード:
private async void GetPicFilesFromStorePath()
{
//var path = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
//var a = Directory.GetFiles(Name, "*.*").Where(x => x.EndsWith(".jpg"));
//foreach (var x in a)
//{
// PicFiles.Add(new Uri((String.Format("ms-appdata:///local/{0}", x))));
//}
StorageFolder localfolder = Windows.Storage.ApplicationData.Current.LocalFolder;
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");
QueryOptions queryOptions = new QueryOptions(Windows.Storage.Search.CommonFileQuery.OrderByName, fileTypeFilter);
StorageFileQueryResult queryResult = localfolder.CreateFileQueryWithOptions(queryOptions);
var files = await queryResult.GetFilesAsync();
foreach (StorageFile x in files)
{
PicFiles.Add(new Uri((String.Format("ms-appdata:///local/{0}", x.Name))));
}
flipView1.ItemsSource = PicFiles;
}
問題は、「ms-appdata:/// local /」接頭辞を使用して8時間後に解決済みです。今私の質問に答えるためにここに戻る。一日後に鋸が正解に答えました。 –