2009-09-07 18 views
6

bir Modal Pencereyi bir WPF Kullanıcı Denetimi'nden görüntülemek mümkündür, bu bir ElementHost öğesinin alt öğesidir ve Modal Pencerenin sahibini/ebeveyini içeren Form denetimine ayarlayabilir mi?WPF ShowDialog ve ElementHost

Bunu yapamazsınız, çünkü Owner özelliği Windows bir örneğini alıp, eski bir Windows Forms Form denetimi olan Element Host denetiminin üst tarafına ayarlamak istiyorum. Sadece bir iş ya da alternatif bir yaklaşım olup olmadığını merak ediyorum.

Sorun, Modal Pencerenin görüntülendiğinde ve kullanıcı başka bir uygulamaya geçtiğinde, daha sonra tekrar Modal Penceresi gizlendiğinde ve kullanıcının ana Pencere ile etkileşimde bulunamadığında ortaya çıkar. Windows, Modal Penceresinin hala sahip olmadığında, sahip olmadığında/Sahip Olmadığı bir ilişki kümesinin bulunmadığı için görüntülenir.

Şerefe, James.

cevap

8

böyle bu sorunu çözmek için WindowInteropHelper kullanıyorum: barındıran winform penceresini bulmak için

var wpfDialog = new MyWpfDialog(); 
var interopHelper = new WindowInteropHelper(wpfDialog) 
     { 
      Owner = winFormsDialog.Handle 
     }; 

wpfDialog.ShowDialog(); 
+0

Merhaba, Teşekkürler. Benim Sorun Çözüldü. – ayc

4

Bu yazı eski biliyorum ama bir şekilde karşıdan karşıya geldi Winform penceresine erişemeyeceğiniz bir wpf UserControl bağlamından ElementHost. Bunu yararlı olarak buldum, böylece ana pencereyi geçmek zorunda kalmam.


HwndSource winformWindow = (System.Windows.Interop.HwndSource.FromDependencyObject(wpfControlInElementHost) as System.Windows.Interop.HwndSource); 
if (winformWindow != null) 
{ 
    var interopHelper = new WindowInteropHelper(wpfWindow) 
    { 
     Owner = winformWindow.Handle 
    }; 
} 
İlgili konular