private async void SetButton_Click(object sender, RoutedEventArgs e)
        {
            string changedSetting  = viewModel.SettingName;
            bool   isResetRequired = NetworkResetRequiredSettingsList.Contains(changedSetting) || PrinterResetRequiredSettingsList.Contains(changedSetting);
            bool   resetPrinter    = PrinterResetRequiredSettingsList.Contains(changedSetting);
            bool   success         = true;

            await printerManager.PerformAction($"Setting value for setting {changedSetting}...", (zebraCardPrinter, connection) => {
                if (DisableWiredDhcpSettingsList.Contains(changedSetting))
                {
                    zebraCardPrinter.SetSetting(ZebraCardSettingNames.WIRED_DHCP, "disabled");
                }

                if (DisableWirelessDhcpSettingsList.Contains(changedSetting))
                {
                    zebraCardPrinter.SetSetting(ZebraCardSettingNamesZmotif.WIRELESS_DHCP, "disabled");
                }

                zebraCardPrinter.SetSetting(changedSetting, viewModel.NewSettingValue);
            }, (exception) => {
                success = false;
                MessageBoxHelper.ShowError($"Error setting value for setting {viewModel.SettingName}: {exception.Message}");
            }, () => {
                if (success)
                {
                    Application.Current.Dispatcher.Invoke(() => {
                        Close();
                    });

                    if (isResetRequired)
                    {
                        Application.Current.Dispatcher.Invoke(() => {
                            string resetButtonName = "Reset";
                            string resetTypeString = resetPrinter ? "printer" : "network";

                            MessageDialog resetDialog = new MessageDialog {
                                Title              = "Reset Required",
                                Message            = $"The setting {viewModel.SettingName} requires a {resetTypeString} reset for any changes to take effect. Click {resetButtonName} to reset the {resetTypeString}.",
                                PositiveButtonText = resetButtonName
                            };

                            resetDialog.PositiveButtonClicked += async() => {
                                await printerManager.ReestablishConnection(resetPrinter);
                            };

                            resetDialog.ShowDialog();
                        });
                    }
                    else
                    {
                        settingsDemo.RetrieveSettings();
                    }
                }
            });
        }