/// <summary>
        /// Se la finestra del pubblico non è aperta (o non è istanziata)
        /// la creo sul momento
        /// </summary>
        public bool aprireFinestraPubblico()
        {
            // Se è già aperta, non faccio niente
            if (_pubblicoWindow != null)
            {
                return(false);
            }

            IInputElement elementoKeyboardInfuocato = Keyboard.FocusedElement;

            // Creo
            _pubblicoWindow = new PubblicoWindow();

            // Posiziono
            posizionaFinestraPubblico();

            // Gestisco la chiusura per il rilascio del vm
            _pubblicoWindow.Closed += chiusoPubblicoWindow;

            // Visualizzo modeless
            _pubblicoWindow.Show();
            _pubblicoWindow.Topmost = true;

            // Devo rimenttere il fuoco sul componente che lo deteneva prima
            Keyboard.Focus(elementoKeyboardInfuocato);

            // Uso lo stesso viewmodel della gallery perché deve lavorare identico
            _pubblicoWindow.DataContext = fotoGalleryViewModel;

            return(true);
        }
        public void chiudereFinestraPubblico()
        {
            if (_pubblicoWindow != null)
            {
                // Il viewmodel della finestra pubblica è quello della gallery quindi non posso chiuderlo.
                // Chiudo solo la finestra

                _pubblicoWindow.Close();

                _pubblicoWindow = null;
            }
        }
        public void chiusoPubblicoWindow(object sender, EventArgs e)
        {
            if (_pubblicoWindow != null)
            {
                _pubblicoWindow.Closed -= chiusoPubblicoWindow;
                _pubblicoWindow         = null;
            }
            if (!azioneInCorso)
            {
                stavaGirandoPubblico = false;
            }

            FormuleMagiche.attendiGcFinalizers();
        }