コード例 #1
0
        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);
        }
コード例 #2
0
        public void CloseCurrent()
        {
            DialogHost dialogHost = WPFDialogShower.GetActiveWindowDialogHost();

            if (dialogHost != null)
            {
                dialogHost.IsOpen = false;
            }
        }
コード例 #3
0
        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);
        }