我有一个使用 MVVM、XAML 和 C# 的 Windows 8 项目。
我的一种方法目前是更新ObservableCollection
Pictures 文件夹中的所有图像,转换为BitmapImage
格式,这与我的 xaml 绑定以在ListGrid
. 我遇到的问题是我希望使用 in 的SelectedItem
属性ListGrid
来允许用户打开 DoubleTapped 的图片 - 为此,我需要BitmapImages
在我的ObservableCollection
. 目前,当我尝试执行此操作时,该UriSource
属性设置为 null。我做错了什么?
这是填充我的 ObservableCollection, "Images" 的方法:
private async void FindRelatedImages()
{
FileOpenPicker picPicker = new Windows.Storage.Pickers.FileOpenPicker();
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".png");
fileTypeFilter.Add(".jpg");
fileTypeFilter.Add(".jpeg");
fileTypeFilter.Add(".gif");
fileTypeFilter.Add(".bmp");
var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, fileTypeFilter);
StorageFolder folderToGetPicsFrom = KnownFolders.PicturesLibrary;
var query = folderToGetPicsFrom.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();
// Process results
ObservableCollection<BitmapImage> newList = new ObservableCollection<BitmapImage>();
foreach (StorageFile file in fileList)
{
// Process file
BitmapImage src = new BitmapImage( uriSource : new Uri(file.Path));
// src.UriSource = new Uri(file.Path, UriKind.Absolute);
src.SetSource(await file.OpenAsync(FileAccessMode.ReadWrite));
newList.Add(src);
}
Images = newList;
}