189 messaggi dal 26 marzo 2001
Ciao,

in un'applicazione Silverlight 4 sto usando il controllo Popup per mostrare un popup quando clicco su un bottone.
Vorrei chiudere il popup quando clicco in un qualsiasi altro punto della pagina che non sia il popup.

Ho visto che in WPF il controllo Popup ha la property StaysOpen che però non è disponibile in Silverlight.

Ho cercato un po' in giro e ho trovato due soluzioni:

1) Gestire gli eventi Opened e Closed del popup: nell'evento Opened ci si aggancia all'evento OnMouseLeftButtonDown del controllo padre (il primo nella lista dei parent) e in questo evento si chiude il popup. Nell'evento Closed del popup ci si sgancia dall'evento OnMouseLeftButtonDown del parent.

2) Usare un layer trasparente come contenitore del popup e chiudere il popup nell'evento OnMouseLeftButtonDown del layer trasparente (è un po' quello che fa il ContextMenu di Silverlight, ho guardato con reflector il codice)

La prima soluzione l'ho testata e funziona bene.

La seconda penso non funzioni quando voglio gestire un menu con più menu a tendina (gestiti a popup) perchè quando clicco su un menu si dovrebbe chiudere il menu attualmente aperto ed aprire quello nuovo.
Ma se c'è un layer trasparente, probabilmente non viene intercettato il click sul nuovo menu (non ho provato però questa soluzione).

Cosa ne pensate? Esistono soluzioni migliori?
Modificato da OasisLiveForever il 04 luglio 2011 09.23 -
24 messaggi dal 19 ottobre 2010
ce' il comando il javascipt che ti permette di chiudere la finestra




private void CloseModal()
{
Response.Write("<script language='javascript'>function controlloWindows()
{
if (window.opener && !window.opener.closed)
{
window.close();
}

}</script>");
}
189 messaggi dal 26 marzo 2001
Ciao,

la mia è un'applicazione Silverlight, non html e il popup non è una window separata ma il controllo Popup di Silverlight.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.