2009-09-07 11 views
6

क्या एक WPF उपयोगकर्ता नियंत्रण से एक मॉडल विंडो प्रदर्शित करना संभव है, जो एलिमेंटहोस्ट का बच्चा है, और मॉडल विंडो के स्वामी/अभिभावक को फॉर्म नियंत्रण में सेट करना है?WPF ShowDialog और ElementHost

मैं यदि आप ऐसा नहीं कर सकते, क्योंकि मालिक संपत्ति खिड़की, जैसा कि मैंने तत्व होस्ट नियंत्रण के माता पिता, जो एक पुराने विंडोज है के लिए यह निर्धारित करना चाहते हैं, जहां का एक उदाहरण लेता है अनुमान लगा रहा हूँ प्रपत्र नियंत्रण फॉर्म्स। बस सोच रहा है कि कोई काम या वैकल्पिक दृष्टिकोण है या नहीं।

समस्या तब होती है जब मॉडल विंडो प्रदर्शित होती है और उपयोगकर्ता दूसरे एप्लिकेशन पर स्विच करता है, फिर फिर से, मॉडल विंडो छिपी हुई है और उपयोगकर्ता मुख्य विंडो से बातचीत करने में असमर्थ है। विंडोज़ के कारण यह सोच रहा है कि मॉडल विंडो अभी भी प्रदर्शित होती है, जब ऐसा नहीं होता है, क्योंकि कोई मालिक/अभिभावक संबंध सेट नहीं होता है।

चीयर्स, जेम्स।

उत्तर

8

मैं इस तरह कि समस्या को हल करने WindowInteropHelper उपयोग कर रहा हूँ:

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

wpfDialog.ShowDialog(); 
+0

हाय, धन्यवाद। मेरा मुद्दा हल किया। – ayc

4

मैं जानता हूँ कि इस पोस्ट पुरानी है, लेकिन मैं एक तरह से भर में आया था WinForm खिड़की है कि होस्टिंग खोजने के लिए ElepHost एक wpf UserControl के संदर्भ से जहां आपको Winform विंडो तक पहुंच नहीं हो सकती है। मुझे यह उपयोगी साबित हुआ ताकि मुझे होस्ट विंडो को पास न करना पड़े।


HwndSource winformWindow = (System.Windows.Interop.HwndSource.FromDependencyObject(wpfControlInElementHost) as System.Windows.Interop.HwndSource); 
if (winformWindow != null) 
{ 
    var interopHelper = new WindowInteropHelper(wpfWindow) 
    { 
     Owner = winformWindow.Handle 
    }; 
} 
संबंधित मुद्दे