2013-03-07 1 views
1

J'ai une fenêtre contextuelle modale dans mon application wpf. Après avoir montré cette fenêtre, dans certaines situations (rares), la fenêtre a disparu de l'interface utilisateur. Mais nous pouvons trouver cela en utilisant "alt + tab" et ne pouvons pas le rendre actif.fenêtre pop-up WPF disparaît de l'interface utilisateur de manière inattendue

S'il vous plaît trouverez ci-dessous le code i utilisé,

 //WindowInteropHelper assists interoperation between Windows Presentation Foundation (WPF) and Win32 code. 

     private void OnControlClick(object sender, RoutedEventArgs e) 
     { 
     System.Drawing.Point p = System.Windows.Forms.Control.MousePosition; 
     MyPopup popup = new MyPopup(); 

     _windowInteropHelper = new System.Windows.Interop.WindowInteropHelper(popup); 
     _windowInteropHelper.Owner = this._owner; 
     popup.WindowStartupLocation = System.Windows.WindowStartupLocation.Manual; 
     popup.Left = p.X; 
     popup.Top = p.Y; 

     popup.Closing += new System.ComponentModel.CancelEventHandler(OnPopupClosing); 
     popup.ShowDialog(); 
     } 
+0

Nous avons probablement besoin de plus de code pour comprendre ce qui se passe. Comment '_owner' obtient-il sa valeur? Comment 'MyPopup' est-il défini? Est-il possible d'utiliser le contrôle WPF 'Popup' à la place? – Tinsa

+0

MyPopup est dérivé de la classe Window et la classe WindowInteropHelper a une propriété appelée "Owner" de type IntPtr, qui obtient ou définit le handle de la fenêtre du propriétaire WPF. J'ai besoin d'une fenêtre modale en tant que popup. –

Répondre

0

Essayez d'utiliser la propriété IsOpen pour afficher/cacher la fenêtre contextuelle.

Questions connexes