async Task <string> SelectSpectrumAsync(string description) { var message = new SelectOpenFileMessage(this) { Message = description }; message.Filter = new string[] { "id" }; Messenger.Default.Send(this, message); if (!string.IsNullOrEmpty(message.SelectedFile)) { var id_file = message.SelectedFile; var dir = System.IO.Path.GetDirectoryName(id_file); if ((await IdFile.CheckTypeAsync(id_file)) == DataType.WideScan) { return(dir); } else { // ※ViewModelからUIにメッセージを送る仕組みはどうする? // WideScanじゃないよ! throw new NotWideScanException("WideScanのデータしか使えませんよ!"); } } else { // 単なるキャンセル. return(string.Empty); } }
void LoadCondition_Executed(object parameter) { var message = new SelectOpenFileMessage(this) { Message = "ロードするプロファイルを選択して下さい。" }; message.Filter = new string[] { "*.fcd", "*" }; Messenger.Default.Send(this, message); if (!string.IsNullOrEmpty(message.SelectedFile)) { // ロードする. DepthProfileFittingData.LoadFittingCondition(message.SelectedFile); } }
async void AddReferenceSpectrum_Executed(object parameter) { var message = new SelectOpenFileMessage(this) { Message = "参照スペクトルを選んで下さい." }; // 拡張子ではなくファイル名が指定されている場合ってどうするの? message.Filter = new string[] { "id" }; Messenger.Default.Send(this, message); if (!string.IsNullOrEmpty(message.SelectedFile)) { await DepthProfileFittingData.AddReferenceSpectrumAsync(message.SelectedFile, CurrentFittingProfile); } }
static void SelectOpenFile(SelectOpenFileMessage message) { // とりあえず1つだけ選択する. var dialog = new Microsoft.Win32.OpenFileDialog { Title = message.Message }; dialog.Filter = string.Join("|", message.Filter.Select(filter => $"{filter}|{filter}").ToArray()); if (System.IO.Path.IsPathRooted(message.SelectedFile)) { dialog.FileName = message.SelectedFile; } if (dialog.ShowDialog() == true) { message.SelectedFile = dialog.FileName; } else { message.SelectedFile = string.Empty; } }