public Task <string> GetFileNameFromUserForOpen() { var fileSpecifications = FileHandlers.Where(fr => fr.Metadata.CanRead).Select(fr => new FileSpecification(fr.Metadata.DisplayName, fr.Metadata.FileExtensions)); var filter = string.Join("|", from r in fileSpecifications.OrderBy(f => f.DisplayName) let exts = string.Join(";", r.FileExtensions.Select(x => "*" + x)) select string.Format("{0}|{1}", r.DisplayName, exts)); var all = string.Format("{0}|{1}", "All supported types", string.Join(";", fileSpecifications.SelectMany(f => f.FileExtensions).Select(x => "*" + x).OrderBy(x => x))); filter = string.Join("|", all, filter); var dialog = new OpenFileDialog(); dialog.DefaultExt = fileSpecifications.First().FileExtensions.First(); dialog.Filter = filter; var result = dialog.ShowDialog(); if (result != true) { return(Task.FromResult <string>(null)); } return(Task.FromResult(dialog.FileName)); }
public Task <string> GetFileNameFromUserForSave() { var x = FileHandlers.Where(fw => fw.Metadata.CanWrite).Select(fw => new FileSpecification(fw.Metadata.DisplayName, fw.Metadata.FileExtensions)); return(GetFileNameFromUserForWrite(x)); }