public void ShowDevOptionsDialog() { if (_devOptionsDialog != null || !IsEnabled) { return; } DispatcherHelpers.RunOnDispatcher(() => { var options = new[] { new DevOptionHandler( "Reload JavaScript", HandleReloadJavaScript), new DevOptionHandler( IsRemoteDebuggingEnabled ? "Stop JS Remote Debugging" : "Start JS Remote Debugging", () => { IsRemoteDebuggingEnabled = !IsRemoteDebuggingEnabled; HandleReloadJavaScript(); }), new DevOptionHandler( _devSettings.IsHotModuleReplacementEnabled ? "Disable Hot Reloading" : "Enable Hot Reloading", () => { _devSettings.IsHotModuleReplacementEnabled = !_devSettings.IsHotModuleReplacementEnabled; HandleReloadJavaScript(); }), new DevOptionHandler( _devSettings.IsReloadOnJavaScriptChangeEnabled ? "Disable Live Reload" : "Enable Live Reload", () => _devSettings.IsReloadOnJavaScriptChangeEnabled = !_devSettings.IsReloadOnJavaScriptChangeEnabled), new DevOptionHandler( _devSettings.IsElementInspectorEnabled ? "Hide Inspector" : "Show Inspector", () => { _devSettings.IsElementInspectorEnabled = !_devSettings.IsElementInspectorEnabled; _currentReactContext? .GetJavaScriptModule <RCTDeviceEventEmitter>() .emit("toggleElementInspector", null); }), }; _devOptionsDialogOpen = true; _devOptionsDialog = new DevOptionDialog(); _devOptionsDialog.Closed += (_, __) => { _devOptionsDialogOpen = false; _dismissDevOptionsDialog = null; _devOptionsDialog = null; }; foreach (var option in options) { _devOptionsDialog.Add(option.Name, option.OnSelect); } if (_redBoxDialog != null) { _dismissRedBoxDialog(); } #if WINDOWS_UWP var asyncInfo = _devOptionsDialog.ShowAsync(); _dismissDevOptionsDialog = asyncInfo.Cancel; foreach (var option in options) { option.HideDialog = _dismissDevOptionsDialog; } #else if (Application.Current != null && Application.Current.MainWindow != null && Application.Current.MainWindow.IsLoaded) { _devOptionsDialog.Owner = Application.Current.MainWindow; } else { _devOptionsDialog.Topmost = true; _devOptionsDialog.WindowStartupLocation = WindowStartupLocation.CenterScreen; } _dismissDevOptionsDialog = _devOptionsDialog.Close; _devOptionsDialog.Show(); foreach (var option in options) { option.HideDialog = _dismissDevOptionsDialog; } #endif }); }