我有一个GetPhoto方法从磁盘上获取照片:
public async Task<IFile> GetPhoto(string fileName)
{
var localStorage = FileSystem.Current.LocalStorage;
var folderExists = await localStorage.CheckExistsAsync(PhotosFolder);
if (!folderExists.Equals(ExistenceCheckResult.FolderExists))
{
return null;
}
var localStorageFolder = await localStorage.GetFolderAsync(PhotosFolder);
var fileExists = await localStorageFolder.CheckExistsAsync(fileName);
if (!fileExists.Equals(ExistenceCheckResult.FileExists))
{
return null;
}
return await localStorageFolder.GetFileAsync(fileName);
}
另一个用特定照片调用GetPhoto:
public async Task<ImageSource> ProfileImageSource()
{
var file = await StorageHelper.Current.GetPhoto("profile_picture.jpg");
if (file == null)
{
return ImageSource.FromFile("profile_placeholder.png");
}
var stream = await file.OpenAsync(FileAccess.Read);
stream.Close();
return ImageSource.FromStream(() => stream);
}
这些运行异步。
然后,我有一个SetTableView方法。此方法获取要在表视图中显示的配置文件图像。
private async void SetTableView()
{
var profileImageSource = await ProfileImageSource();
Content = new TableView
{
HasUnevenRows = true,
Intent = TableIntent.Menu,
Root = new TableRoot()
{
new TableSection()
{
new ProfileCell(profileImageSource, "Casa de Férias", HandleProfileCellTap())
}
}
};
}
但是,构建TableView时,图像源尚未从流中完全加载图像,导致我崩溃,说数据不能为空。
如何告诉TableView仅在我的ImageSource准备就绪时构建?
谢谢