/// <summary> /// Ask for confirmation /// </summary> /// <param name="title">Display Title with character limit</param> /// <param name="msg">Display message with character limit</param> public bool Confirm(string title = null, string msg = null) { var viewModel = new ConfirmDialogViewModel(title.LimitLength(20), msg.LimitLength(80)); // Return dialogresult return(ShowDialog(viewModel) ?? false); }
public ConfirmDialogView(ConfirmDialogViewModel viewModel) { InitializeComponent(); DataContext = _viewModel = viewModel; viewModel.View = this; Closed += OnClosed; }
public bool ShowConfirmationDialog(string messageText) { ShowChildWindowMessage message = _messenger.CreateMessage <ShowChildWindowMessage>(); ConfirmDialogViewModel viewModel = (ConfirmDialogViewModel)_viewModelFactory.GetChild <ConfirmDialogViewModel>(messageText); message.Content = viewModel; message.IsDialog = true; _messenger.Send(message); return(viewModel.Status); }
public ActionResult ConfirmDialog(Guid id, string url, string text) { ConfirmDialogViewModel cdm = new ConfirmDialogViewModel() { Id = id, Url = url, Text = text }; return(PartialView(cdm)); }
public async Task ConfirmDialog_when_ClearSetting() { var model = new MainModel(new MockFileSystem(), Scheduler.Immediate); var mainVM = new MainWindowViewModel(model); model.Initialize(); await model.WaitIdleUI().Timeout(3000d); SettingAppViewModel settingVM = mainVM.SettingVM.Value; //ステージ 初期状態 settingVM.IgnoreExtensions.Count .Should().BeGreaterThan(1, "設定がなにかあるはず"); //ステージ 設定消去→確認ダイアログ表示 Task taskClear1 = settingVM.ClearIgnoreExtensionsCommand.ExecuteAsync(); mainVM.IsDialogOpen.Value .Should().BeTrue("確認ダイアログが開いているはず"); mainVM.DialogContentVM.Value .Should().BeOfType <ConfirmDialogViewModel>("確認ダイアログが開いているはず"); ConfirmDialogViewModel confirmVM = (mainVM.DialogContentVM.Value as ConfirmDialogViewModel) !; taskClear1.IsCompleted .Should().BeFalse("まだ確認ダイアログが開いたままのはず"); //ステージ 確認ダイアログで拒否 confirmVM.IsOkResult.Value = false; taskClear1.IsCompleted .Should().BeTrue("確認ダイアログが閉じたはず"); mainVM.IsDialogOpen.Value .Should().BeFalse("確認ダイアログが閉じたはず"); settingVM.IgnoreExtensions.Count .Should().BeGreaterThan(1, "設定はまだ消去されていないはず"); //ステージ確認ダイアログでOK Task taskClear2 = settingVM.ClearIgnoreExtensionsCommand.ExecuteAsync(); (mainVM.DialogContentVM.Value as ConfirmDialogViewModel) !.IsOkResult.Value = true; taskClear2.IsCompleted .Should().BeTrue("確認ダイアログが閉じたはず"); mainVM.IsDialogOpen.Value .Should().BeFalse("確認ダイアログが閉じたはず"); settingVM.IgnoreExtensions.Count .Should().Be(0, "設定が消去されたはず"); }
public MainWindowViewModel() { Dictionary <string, Page> pageCache = new Dictionary <string, Page>(); Model = new MainWindowModel(); Page = Model.ToReactivePropertySlimAsSynchronized(m => m.Page); TransitPage = new ReactiveCommand <string>(); TransitPage.Subscribe(page => { if (!pageCache.ContainsKey(page)) { pageCache.Add(page, (Page)Activator.CreateInstance(null !, page)?.Unwrap() !); } Page.Value = pageCache[page] !; }); ButtonPower = new AsyncReactiveCommand(); ButtonPower.Subscribe(async _ => { var vm = new ConfirmDialogViewModel { Message = { Value = "Are you sure to quit the application?" } }; var dialog = new ConfirmDialog { DataContext = vm }; var res = await DialogHost.Show(dialog, "MessageDialogHost"); if (res is bool quit && quit) { AUTDHandler.Instance.Dispose(); SettingManager.SaveSetting("settings.json"); Application.Current.Shutdown(); } }); OpenUrl = new ReactiveCommand <string>(); OpenUrl.Subscribe(url => { var psi = new ProcessStartInfo { FileName = url, UseShellExecute = true }; Process.Start(psi); }); Save = new AsyncReactiveCommand(); Save.Subscribe(async _ => { var dialogArgs = new SaveFileDialogArguments { Width = 600, Height = 800, Filters = "json files|*.json", ForceFileExtensionOfFileFilter = true, CreateNewDirectoryEnabled = true }; var result = await SaveFileDialog.ShowDialogAsync("MessageDialogHost", dialogArgs); if (result.Canceled) { return; } try { SettingManager.SaveSetting(result.File); } catch { var vm = new ErrorDialogViewModel { Message = { Value = "Failed to save settings." } }; var dialog = new ErrorDialog { DataContext = vm }; await DialogHost.Show(dialog, "MessageDialogHost"); } }); Load = new AsyncReactiveCommand(); Load.Subscribe(async _ => { var dialogArgs = new OpenFileDialogArguments { Width = 600, Height = 800, Filters = "json files|*.json" }; var result = await OpenFileDialog.ShowDialogAsync("MessageDialogHost", dialogArgs); if (result.Canceled) { return; } try { SettingManager.LoadSetting(result.File); } catch { var vm = new ErrorDialogViewModel { Message = { Value = "Failed to load settings." } }; var dialog = new ErrorDialog { DataContext = vm }; await DialogHost.Show(dialog, "MessageDialogHost"); } }); Start = AUTDHandler.Instance.IsRunning.Select(x => !x).ToAsyncReactiveCommand(); Start.Subscribe(async _ => { if (!AUTDHandler.Instance.IsOpen.Value) { var res = await Task.Run(() => AUTDHandler.Instance.Open()); if (res != null) { var vm = new ErrorDialogViewModel { Message = { Value = $"Failed to open AUTD: {res}.\nSee Link options." } }; var dialog = new ErrorDialog { DataContext = vm }; await DialogHost.Show(dialog, "MessageDialogHost"); return; } } AUTDHandler.Instance.SendGain(); AUTDHandler.Instance.SendModulation(); }); Stop = AUTDHandler.Instance.IsRunning.Select(x => x).ToReactiveCommand(); Stop.Subscribe(_ => { AUTDHandler.Instance.Stop(); }); }