venerdì 19 agosto 2011

Silverlight - Close a ChildWindow

C# 4.0

Per chiudere una Child Window era stato impostato il seguente codice nell’evento di chiusura della view

private void WindowChild1_Close (object sender, MouseButtonEventArgs e)
        {
            DialogResult = true;
            Close();
        }
 
Questo però comportava che dopo un paio di chiusure della suddetta child l’intera applicazione era come fosse “disabilitata”, non si riusciva più ad interagire con il browser.

Ad oggi quindi per risolvere tale anomalia è stata aggiunta la seguente riga di codice:
 
Application.Current.RootVisual.SetValue(IsEnabledProperty, true);

L’evento è stato conseguentemente modificato nel seguente modo:

private void WindowChild1_Close (object sender, MouseButtonEventArgs e)
        {
            // Workaround to correctly close a child window
            Application.Current.RootVisual.SetValue(IsEnabledProperty, true);

            DialogResult = true;
            Close();
        }

… e così funziona!