private async Task <object> ShowDialogWrapper(object dialog) { object result = null; DialogHost dialogHost = WPFDialogShower.GetActiveWindowDialogHost(); if (dialogHost != null && !isDialogShown) { DialogClosingEventHandler onDialogClose = new DialogClosingEventHandler((sender, eventArgs) => { result = eventArgs.Parameter; }); WPFDialogShower.isDialogShown = true; if (onDialogClose != null) { dialogHost.DialogClosing += onDialogClose; } await dialogHost.ShowDialog(dialog); if (onDialogClose != null) { dialogHost.DialogClosing -= onDialogClose; } WPFDialogShower.isDialogShown = false; } return(result); }
public void CloseCurrent() { DialogHost dialogHost = WPFDialogShower.GetActiveWindowDialogHost(); if (dialogHost != null) { dialogHost.IsOpen = false; } }
private async Task <object> ShowDialogWrapper(object dialog, int timeout = 0) { object result = null; DialogHost dialogHost = WPFDialogShower.GetActiveWindowDialogHost(); if (dialogHost != null && !isDialogShown) { DialogClosingEventHandler onDialogClose = new DialogClosingEventHandler((sender, eventArgs) => { result = eventArgs.Parameter; }); WPFDialogShower.isDialogShown = true; if (onDialogClose != null) { dialogHost.DialogClosing += onDialogClose; } try { if (timeout > 0) { await dialogHost.ShowDialog(dialog, async delegate(object sender, DialogOpenedEventArgs args) { await Task.Delay(timeout); args.Session.Close(false); }); } else { await dialogHost.ShowDialog(dialog); } } catch (Exception ex) { Logger.Log(ex); } if (onDialogClose != null) { dialogHost.DialogClosing -= onDialogClose; } WPFDialogShower.isDialogShown = false; } return(result); }