public void Run(Pages pages)
        {
            if (_isPrintingInProgress)
            {
                return;
            }

            try
            {
                _isPrintingInProgress = true;

                var selectablePrintersViewModel =
                    new SelectablePrintersViewModel(null, _unitOfWorkFactory, _commonServices, _userPrintingRepository);
                var selectablePrintersView = new SelectablePrintersView(selectablePrintersViewModel);
                selectablePrintersView.WindowPosition = WindowPosition.CenterAlways;
                selectablePrintersView.ShowAll();
                var response = selectablePrintersView.Run();

                if (response == (int)ResponseType.Ok)
                {
                    var selectedPrinters = selectablePrintersViewModel.AllPrintersWithSelected
                                           .Where(x => x.IsChecked)
                                           .Select(x => x.Printer.Name);

                    selectablePrintersView.Destroy();
                    foreach (var printer in selectedPrinters)
                    {
                        Print(printer, selectablePrintersViewModel.UserPrintSettings, pages, selectablePrintersViewModel.IsWindowsOs);
                    }
                }
                else
                {
                    selectablePrintersView.Destroy();
                }
            }
            finally
            {
                _isPrintingInProgress = false;
            }
        }
 public SelectablePrintersView(SelectablePrintersViewModel selectablePrintersViewModel)
 {
     _selectablePrintersViewModel = selectablePrintersViewModel ?? throw new ArgumentNullException(nameof(selectablePrintersViewModel));
     this.Build();
     ConfigureDialog();
 }