Catel.Services.UIVisualizerService.ShowWindow C# (CSharp) Method

ShowWindow() protected method

Shows the window.
protected ShowWindow ( FrameworkElement window, bool showModal ) : bool?
window FrameworkElement The window.
showModal bool If true, the window should be shown as modal.
return bool?
        protected virtual bool? ShowWindow(FrameworkElement window, bool showModal)
        {
            if (showModal)
            {
                var showDialogMethodInfo = window.GetType().GetMethodEx("ShowDialog");
                if (showDialogMethodInfo != null)
                {
                    // Child window does not have a ShowDialog, so not null is allowed
                    bool? result = null;

                    window.Dispatcher.InvokeIfRequired(() =>
                    {
                        // Safety net to prevent crashes when this is the main window
                        try
                        {
                            result = showDialogMethodInfo.Invoke(window, null) as bool?;
                        }
                        catch (Exception ex)
                        {
                            Log.Warning(ex, "An error occurred, returning null since we don't know the result");
                        }
                    });

                    return result;
                }

                Log.Warning("Method 'ShowDialog' not found on '{0}', falling back to 'Show'", window.GetType().Name);
            }

            var showMethodInfo = window.GetType().GetMethodEx("Show");
            if (showMethodInfo == null)
            {
                throw Log.ErrorAndCreateException<NotSupportedException>("Method 'Show' not found on '{0}', cannot show the window", window.GetType().Name);
            }

            window.Dispatcher.InvokeIfRequired(() => showMethodInfo.Invoke(window, null));
            return null;
        }