/// <summary> /// Show file select dialog. /// </summary> /// <param name="dialogService"></param> /// <param name="title">Dialog title.</param> /// <param name="canMultiSelect">If true; can multi select.</param> /// <param name="callBack">Callback action.</param> /// <param name="isModal">If true; dialog is shown as a modal.</param> /// <param name="fileNamePrefixText">File name prefix text.</param> /// <param name="selectButtonText">Select button text.</param> /// <param name="cancelButtonText">Cancel button text.</param> /// <param name="textResource">Text resource for explorer.</param> /// <param name="filters">File filters.</param> /// <param name="rootFolders">Root folders path.</param> public static void ShowFileSelectDialog(this IDialogService dialogService, string title, bool canMultiSelect, Action <IDialogResult> callBack, bool isModal = true, string fileNamePrefixText = null, string selectButtonText = null, string cancelButtonText = null, ExplorerBaseTextResource textResource = null, IEnumerable <FileFilter> filters = null, IEnumerable <string> rootFolders = null) { var param = new DialogParameters { { DialogParameterNames.Title, title }, { DialogParameterNames.CanMultiSelect, canMultiSelect }, }; if (!string.IsNullOrEmpty(fileNamePrefixText)) { param.Add(DialogParameterNames.FileNamePrefixText, fileNamePrefixText); } if (!string.IsNullOrEmpty(selectButtonText)) { param.Add(DialogParameterNames.SelectButtonText, selectButtonText); } if (!string.IsNullOrEmpty(cancelButtonText)) { param.Add(DialogParameterNames.CancelButtonText, cancelButtonText); } if (textResource != null) { param.Add(DialogParameterNames.TextResource, textResource); } if (filters != null) { param.Add(DialogParameterNames.Filters, filters); } if (rootFolders != null) { param.Add(DialogParameterNames.RootFolders, rootFolders); } if (isModal) { dialogService.ShowDialog(DialogNames.FileSelectDialog, param, callBack); } else { dialogService.Show(DialogNames.FileSelectDialog, param, callBack); } }
/// <summary> /// Show file save dialog. /// </summary> /// <param name="dialogService"></param> /// <param name="title">Dialog title.</param> /// <param name="callBack">Callback action.</param> /// <param name="isModal">If true; dialog is shown as a modal.</param> /// <param name="fileNamePrefixText">File name prefix text.</param> /// <param name="fileTypePrefixText">File type prefix text.</param> /// <param name="saveButtonText">Save button text.</param> /// <param name="cancelButtonText">Cancel button text.</param> /// <param name="textResource">Text resource for explorer.</param> /// <param name="filters">File filters.</param> /// <param name="rootFolders">Root folders path.</param> /// <param name="overwriteConfirmationTitle">Dialog title when overwriting files.</param> /// <param name="overwriteConfirmationMessageFunc">Message function when overwriting files.</param> /// <param name="overwriteConfirmationOKButtonText">Dialog OK button text when overwriting files.</param> /// <param name="overwriteConfirmationCancelButtonText">Dialog Cancel button text when overwriting files.</param> public static void ShowFileSaveDialog(this IDialogService dialogService, string title, Action <IDialogResult> callBack, bool isModal = true, string fileNamePrefixText = null, string fileTypePrefixText = null, string saveButtonText = null, string cancelButtonText = null, ExplorerBaseTextResource textResource = null, IEnumerable <FileFilter> filters = null, IEnumerable <string> rootFolders = null, string overwriteConfirmationTitle = null, Func <string, string> overwriteConfirmationMessageFunc = null, string overwriteConfirmationOKButtonText = null, string overwriteConfirmationCancelButtonText = null) { var param = new DialogParameters { { DialogParameterNames.Title, title } }; if (!string.IsNullOrEmpty(fileNamePrefixText)) { param.Add(DialogParameterNames.FileNamePrefixText, fileNamePrefixText); } if (!string.IsNullOrEmpty(fileTypePrefixText)) { param.Add(DialogParameterNames.FileTypePrefixText, fileTypePrefixText); } if (!string.IsNullOrEmpty(saveButtonText)) { param.Add(DialogParameterNames.SaveButtonText, saveButtonText); } if (!string.IsNullOrEmpty(cancelButtonText)) { param.Add(DialogParameterNames.CancelButtonText, cancelButtonText); } if (textResource != null) { param.Add(DialogParameterNames.TextResource, textResource); } if (filters != null) { param.Add(DialogParameterNames.Filters, filters); } if (rootFolders != null) { param.Add(DialogParameterNames.RootFolders, rootFolders); } if (!string.IsNullOrEmpty(overwriteConfirmationTitle)) { param.Add(DialogParameterNames.OverwriteConfirmationTitle, overwriteConfirmationTitle); } if (overwriteConfirmationMessageFunc != null) { param.Add(DialogParameterNames.OverwriteConfirmationMessageFunc, overwriteConfirmationMessageFunc); } if (!string.IsNullOrEmpty(overwriteConfirmationOKButtonText)) { param.Add(DialogParameterNames.OverwriteConfirmationOKButtonText, overwriteConfirmationOKButtonText); } if (!string.IsNullOrEmpty(overwriteConfirmationCancelButtonText)) { param.Add(DialogParameterNames.OverwriteConfirmationCancelButtonText, overwriteConfirmationCancelButtonText); } if (isModal) { dialogService.ShowDialog(DialogNames.FileSaveDialog, param, callBack); } else { dialogService.Show(DialogNames.FileSaveDialog, param, callBack); } }
public MainWindowViewModel(IDialogService dialogService) { this.dialogService = dialogService; this.ShowNotificationDialog.Subscribe(_ => { // Standard //var param = new DialogParameters //{ // { DialogParameterNames.Message, "Notification" }, // { DialogParameterNames.Title, "Notification" }, // { DialogParameterNames.WindowStyle, (System.Windows.Style)App.Current.FindResource("dialogStyle") }, //}; //this.dialogService.ShowDialog(DialogNames.Notification, param, res => this.ResultMessage.Value = "Notification"); // Extensions this.dialogService.ShowNotification("Notification", "Notification", res => this.ResultMessage.Value = "Notification"); }); this.ShowConfirmationDialog.Subscribe(_ => { this.dialogService.ShowConfirmation("Confirmation?", "Confirmation", res => { if (res.Result == ButtonResult.OK) { this.ResultMessage.Value = "Confirmed OK"; } else if (res.Result == ButtonResult.Cancel) { this.ResultMessage.Value = "Confirmed Cancel"; } else { this.ResultMessage.Value = $"Confirmed {res.Result}"; } }); }); this.ShowSingleFolderSelectDialog.Subscribe(_ => { this.dialogService.ShowFolderSelectDialog("SingleFolderSelect", false, res => { if (res.Result == ButtonResult.OK) { var selectedPath = res.Parameters.GetValue <IEnumerable <string> >(DialogResultParameterNames.SelectedPaths).First(); this.ResultMessage.Value = $"Selected Folder: {selectedPath}"; } else { this.ResultMessage.Value = "Cancel Single Folder Select"; } }); }); this.ShowMultiFolderSelectDialog.Subscribe(_ => { this.dialogService.ShowFolderSelectDialog("MultiFolderSelect", true, res => { if (res.Result == ButtonResult.OK) { var selectedPaths = res.Parameters.GetValue <IEnumerable <string> >(DialogResultParameterNames.SelectedPaths); this.ResultMessage.Value = $"Selected Folders:{Environment.NewLine} {string.Join($"{Environment.NewLine} ", selectedPaths)}"; } else { this.ResultMessage.Value = "Cancel Multi Folder Select"; } }); }); this.ShowSingleFileSelectDialog.Subscribe(_ => { this.dialogService.ShowFileSelectDialog("SingleFileSelect", false, res => { if (res.Result == ButtonResult.OK) { var selectedPaths = res.Parameters.GetValue <IEnumerable <string> >(DialogResultParameterNames.SelectedPaths); if (selectedPaths != null && selectedPaths.Any()) { this.ResultMessage.Value = $"Selected File: {selectedPaths.First()}"; } else { this.ResultMessage.Value = "File Not Selected"; } } else { this.ResultMessage.Value = "Cancel Single File Select"; } }); }); this.ShowMultiFileSelectDialog.Subscribe(_ => { var filters = new[] { new FileFilter("All Files (*.*)"), new FileFilter("Text File (*.txt; *.csv)", new[] { ".txt", ".csv" }), new FileFilter("Excel File (*.xlsx; *.xlsm; *.xls)", ".xlsx", ".xlsm", ".xls"), }; this.dialogService.ShowFileSelectDialog("MultiFileSelect", true, res => { if (res.Result == ButtonResult.OK) { var selectedPaths = res.Parameters.GetValue <IEnumerable <string> >(DialogResultParameterNames.SelectedPaths); if (selectedPaths != null && selectedPaths.Any()) { this.ResultMessage.Value = $"Selected Files:{Environment.NewLine} {string.Join($"{Environment.NewLine} ", selectedPaths)}"; } else { this.ResultMessage.Value = "File Not Selected"; } } else { this.ResultMessage.Value = "Cancel Multi File Select"; } }, // Add File Filters filters: filters); }); this.ShowFileSaveDialog.Subscribe(_ => { this.dialogService.ShowFileSaveDialog("FileSave", res => { if (res.Result == ButtonResult.OK) { var saveFilePath = res.Parameters.GetValue <string>(DialogResultParameterNames.SaveFilePath); this.ResultMessage.Value = $"Save File Path: {saveFilePath}"; } else { this.ResultMessage.Value = "Cancel File Save"; } }); }); this.ShowCustomizedFileSaveDialog.Subscribe(_ => { var textResource = new ExplorerBaseTextResource() { FileName = "Name", FileDateModified = "Date modified", FileType = "Type", FileSize = "Size", }; var filters = new[] { new FileFilter("All Files (*.*)"), new FileFilter("Text File (*.txt)", ".txt"), new FileFilter("CSV File (*.csv)", ".csv"), }; var icons = new ExplorerIcons() { BackWardIcon = new BitmapImage(new Uri("/Resources/Backwards_16x.png", UriKind.Relative)), ForwardIcon = new BitmapImage(new Uri("/Resources/Forwards_16x.png", UriKind.Relative)), }; Func <string, string> overwriteConfirmationMessageFunc = (x => $"{x} already exists.{Environment.NewLine}Do you want to replace it?"); var param = new DialogParameters { { DialogParameterNames.Title, "FileSave" }, { DialogParameterNames.DefaultSaveFileName, "Sample.txt" }, { DialogParameterNames.FileNamePrefixText, "File name:" }, { DialogParameterNames.FileTypePrefixText, "Save as type:" }, { DialogParameterNames.SaveButtonText, "Save" }, { DialogParameterNames.CancelButtonText, "Cancel" }, { DialogParameterNames.TextResource, textResource }, { DialogParameterNames.Filters, filters }, { DialogParameterNames.ExplorerIcons, icons }, { DialogParameterNames.OverwriteConfirmationTitle, "OverWrite Confirmation" }, { DialogParameterNames.OverwriteConfirmationMessageFunc, overwriteConfirmationMessageFunc }, { DialogParameterNames.OverwriteConfirmationOKButtonText, "Yes" }, { DialogParameterNames.OverwriteConfirmationCancelButtonText, "No" }, //{ DialogParameterNames.RootFolders, new [] { @"C:\" } }, }; this.dialogService.ShowDialog(DialogNames.FileSaveDialog, param, res => { if (res.Result == ButtonResult.OK) { var saveFilePath = res.Parameters.GetValue <string>(DialogResultParameterNames.SaveFilePath); this.ResultMessage.Value = $"Save File Path: {saveFilePath}"; } else { this.ResultMessage.Value = "Cancel File Save"; } }); }); }