public void chiusoSnapshotPubblicoWindow(object sender, EventArgs e)
        {
            _snapshotPubblicoWindow.Closed -= chiusoSnapshotPubblicoWindow;
            _snapshotPubblicoWindow         = null;

            // Se ho aperto lo ss, lo riporto in primo piano.
            if (_slideShowWindow != null)
            {
                _slideShowWindow.Topmost = true;
            }

            FormuleMagiche.attendiGcFinalizers();
        }
        public void chiudereFinestraSnapshotPubblico()
        {
            if (_snapshotPubblicoWindow != null)
            {
                ClosableWiewModel cvm   = (ClosableWiewModel)snapshotPubblicoViewModel;
                Object            param = null;
                if (cvm.CloseCommand.CanExecute(param))
                {
                    cvm.CloseCommand.Execute(param);
                }
                _snapshotPubblicoWindow = null;

                // Se quando mi sono aperta, stava girando lo ss, allora lo avevo messo in pausa,
                // quindi adesso lo riattivo.
                if (stavaGirandoLoSlideShow)
                {
                    if (slideShowViewModel != null && slideShowViewModel.isPaused)
                    {
                        slideShowViewModel.start();
                    }
                }
                stavaGirandoLoSlideShow = false;
            }
        }
        /// <summary>
        /// Se la finestra dello slide show non è aperta (o non è istanziata)
        /// la creo sul momento
        /// </summary>
        private bool forseApriSnapshotPubblicoWindow()
        {
            // Se è già aperta, non faccio niente
            if (_snapshotPubblicoWindow != null)
            {
                return(false);
            }

            IInputElement elementoKeyboardInfuocato = Keyboard.FocusedElement;

            // Apro la finestra modeless
            // Create a window and make this window its owner
            _snapshotPubblicoWindow         = new SnapshotPubblicoWindow();
            _snapshotPubblicoWindow.Closed += chiusoSnapshotPubblicoWindow;

            if (_slideShowWindow != null)
            {
                // Se ho lo ss attivo, allora devo prendere il suo posto
                if (_slideShowWindow.WindowState == WindowState.Maximized)
                {
                    // In questo caso non posso massimizzare a mia volta :-(
                    // Se sono sul secondo monitor, devo lavorare come se fosse in normal
                    WpfScreen scrn = WpfScreen.GetScreenFrom(_slideShowWindow);
                    _snapshotPubblicoWindow.Height = scrn.WorkingArea.Height;
                    _snapshotPubblicoWindow.Width  = scrn.WorkingArea.Width;
                    _snapshotPubblicoWindow.Top    = scrn.WorkingArea.Top;
                    _snapshotPubblicoWindow.Left   = scrn.WorkingArea.Left;
                }
                else
                {
                    _snapshotPubblicoWindow.Height = _slideShowWindow.Height;
                    _snapshotPubblicoWindow.Width  = _slideShowWindow.Width;
                    _snapshotPubblicoWindow.Top    = _slideShowWindow.Top;
                    _snapshotPubblicoWindow.Left   = _slideShowWindow.Left;
                }

                _snapshotPubblicoWindow.WindowState = WindowState.Normal;
            }
            else
            {
                // valorizzo la geometria del form = a quella del form slide show (praticamente lo ricopro)
                _snapshotPubblicoWindow.Height = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Height;
                _snapshotPubblicoWindow.Width  = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Width;
                _snapshotPubblicoWindow.Top    = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Top;
                _snapshotPubblicoWindow.Left   = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Left;

                /*
                 * if( Configurazione.UserConfigLumen.fullScreen )
                 *      _snapshotPubblicoWindow.WindowState = WindowState.Maximized;
                 * else
                 *      _snapshotPubblicoWindow.WindowState = WindowState.Normal;
                 * */
            }

            _snapshotPubblicoWindow.Show();
            _snapshotPubblicoWindow.Topmost = true;

            // Riposiziono il fuoco sul componente che lo deteneva prima di aprire la finestra
            Keyboard.Focus(elementoKeyboardInfuocato);

            if (Configurazione.UserConfigLumen.geometriaFinestraSlideShow.fullScreen)
            {
                _snapshotPubblicoWindow.WindowState = WindowState.Maximized;
            }
            else
            {
                _snapshotPubblicoWindow.WindowState = WindowState.Normal;
            }

            return(true);
        }