Ho un controllo WPF Popup
che contiene alcuni controlli di modifica (caselle di riepilogo, caselle di testo, caselle di controllo) disposti con un po 'di spazio bianco.Perché un Popup WPF si chiude quando si fa clic sulla sua area di sfondo?
Popup.StaysOpen
è impostato su False
, che è richiesto. Se l'utente fa clic altrove nell'applicazione, l'operazione di modifica dovrebbe essere considerata interrotta e il popup dovrebbe chiudersi.
Sfortunatamente il popup si chiude anche quando l'utente fa clic nell'area di sfondo del popup (lo spazio tra i controlli di modifica).
Ho provato a impostare il popup su Focusable
. Ho anche provato a mettere a fuoco il bambino del popup (a Border
). Nessuna fortuna su entrambi i fronti.
Inoltre, l'evento del mouse sembra passare attraverso il popup. Qualunque elemento si trovi sotto il popup quando clicco, si focalizza. Ciò è possibile nonostante sia lo (nel quale sto facendo clic) sia con lo Popup
sia con lo IsHitTestVisible
e Focusable
impostato su true
.
+1 molto bello ed elegante! –
Ottima soluzione! Ero persino in grado di farlo con un controllo definito su Generic.xaml, utilizzando EventToCommand, passando EventArgs al comando e quindi impostando Handled = True. Grazie! – Dror
Un altro modo per infilare il gestore pari in un punto difficile è derivare una classe 'ArmouredPopup' che deriva da' Popup'. Può sovrascrivere 'OnMouseDown'. Considero questo un bug nella classe popup predefinita. –