Domanda

Stiamo usando finestre popup in un'applicazione Silverlight 2; questi possono essere spostati in modo standard facendo clic sulla barra del titolo e trascinando. Se la barra del titolo viene trascinata fuori dal sito dietro il browser Chrome, la finestra non può più essere spostata.

Abbiamo utenti che lo considerano problematico e mi chiedevo se potesse esserci un altro modo per consentire lo spostamento della finestra quando sono bloccati dietro Chrome.

O forse un modo per impedire a qualsiasi parte del popup di uscire dalla finestra sarebbe meglio.

È stato utile?

Soluzione 2

Dopo aver scavato un po 'ho scoperto che non esiste un meccanismo di trascinamento standard per i popup, ma che un collega lo aveva implementato. È stato facile espandere il codice per vincolare il pop-up alla finestra host. Si comporta un po 'stranamente però. Il trascinamento lento e regolare consente al popup di spostarsi fino al bordo della finestra host, ma il trascinamento irregolare rapido provoca l'arresto prima di raggiungere il bordo. Sto ancora cercando di capire perché.

Altri suggerimenti

I movimenti del mouse vengono segnalati a intervalli di tempo discreti. Cioè, più veloce si sposta il mouse, più distanti sono le posizioni del mouse riportate. Trascinando rapidamente il mouse dall'interno verso l'esterno della finestra è possibile segnalare una posizione ben all'interno della finestra (Punto A), mentre il rapporto successivo sarà ben al di fuori della finestra (Punto B). Se si utilizza la chiamata CaptureMouse durante il trascinamento, è comunque possibile ricevere rapporti sulla posizione del mouse mentre il puntatore si trova all'esterno della finestra host. Quando scopri di esserti spostato oltre la finestra, puoi presumere che il mouse sia sul bordo della finestra. Cioè, se dovessi tracciare una linea immaginaria da PointA a PointB, puoi presumere che l'ultimo punto sia dove quella linea ha attraversato il bordo della finestra. Se non usi MouseCapture o stai usando un plugin senza finestre, non penso che vedrai eventi del mouse quando trascini fuori dalla finestra. In tal caso, stimare la posizione in cui il mouse ha attraversato il bordo della finestra è più difficile.

Il modo migliore per gestirlo sarebbe impedire all'utente di trascinarlo fuori dalla finestra del browser. Per fare ciò è possibile ottenere la larghezza e l'altezza di controllo host Silverlight . Una volta che hai queste informazioni puoi controllare la posizione della finestra mentre l'utente la trascina e non lasciarle andare oltre i limiti della finestra.

potrebbe essere perché l'evento Mouse_Leave si sta attivando ??

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top