2012-03-29 10 views
10

से सबसे ऊपर है z-index windowsformhost को सेट करने के लिए कि वे हमेशा WPF तत्व के शीर्ष पर नहीं हैं?WindowsFormsHost हमेशा WPF तत्व

+2

सरल उत्तर: आप नहीं कर सकते। [यहां] देखें (http://stackoverflow.com/questions/8006092/controls-dont-show-over-winforms-host)। – Clemens

उत्तर

12

MSDN (Layout Considerations for the WindowsFormsHost Element)

एक के अनुसार की मेजबानी के लिए Windows Forms नियंत्रण, एक अलग HWND में तैयार की है, तो यह है हमेशा WPF तत्वों के ऊपर बनाए।

यह एक डिजाइन सीमा है

MSDN से एक और अच्छा लेख है कि संभावित समस्याओं बताते हैं जब Windows में विभिन्न चित्रमय प्रौद्योगिकी का उपयोग कर Technology Regions Overview

हालांकि googling मैंने पाया है कि इस के लिए कुछ hackings होने लगते हैं वह यह है कि (हवाई क्षेत्र प्रतिबंध के रूप में जाना जाता है)

एक हैक (यह व्यक्तिगत रूप से ऐसा नहीं यकीन है कि अगर यह काम करता है की कोशिश कभी नहीं) this link

पर है
+8

"हैक" लिंक 403s – RJFalconer

1

अद्यतन, कुछ साल बाद (2016-09):

मेरा जवाब के बाद, के रूप में शीर्ष टिप्पणी द्वारा बताया गया है, अब वैध नहीं है, और .NET 4.5 के अंतिम संस्करण में उपलब्ध नहीं था, या बाद के रिलीज। दुर्भाग्यवश, मेरे द्वारा शामिल लिंक में अभी भी .NET के "वर्तमान संस्करण" के लिए मौजूद HwndHosts के लिए z-ordering जानकारी है, जो कुछ लोगों को यह विश्वास करने के लिए प्रेरित कर सकती है कि वास्तव में यह कार्यक्षमता मौजूद है। यह नहीं है कोई काम नहीं है।

मूल जवाब:

एक साल बाद, चीजों .NET 4.5 के साथ थोड़ी बदल गई हैं। जो लोग इस पर ठोकर खाई, जितना मैंने किया था के लिए, यहाँ MSDN पर Walkthrough: Arranging Windows Forms Controls in WPF से एक और अधिक अद्यतन अंश है:

डिफ़ॉल्ट रूप से, दिखाई WindowsFormsHost तत्वों हमेशा अन्य WPF तत्वों के ऊपर बनाए जाते हैं, और वे कर रहे हैं जेड ऑर्डर से अप्रभावित। जेड-ऑर्डरिंग सक्षम करने के लिए, WindowsFormsHost की IsRedirected प्रॉपर्टी को सत्य और CompositionMode प्रॉपर्टी को पूर्ण या आउटपुट पर सेट करें।

तुम सब करने की ज़रूरत है, जब .NET 4.5 का उपयोग कर, अपने WindowsFormsHost तत्व IsRedirected="True" और CompositionMode="Full"याCompositionMode="OutputOnly" के लिए निम्न विशेषताओं को जोड़ने है।

+24

आज इसे जांच लिया - ये गुण केवल नेट 4.5 की बीटा रिलीज में थे। दुर्भाग्य से उन्होंने सामान्य रिलीज के लिए अपना रास्ता नहीं बनाया। –

+3

1.3.10 विंडोज प्रस्तुति फाउंडेशन (WPF) 1.3.10.1 HwndHost सुविधा .NET फ्रेमवर्क 4.5 बीटा में WPF से हटा दिया गया .NET फ्रेमवर्क 4.5 डेवलपर पूर्वावलोकन एक WPF HwndHost पुनर्निर्देशन सुविधा शामिल थे। हालांकि, इस सुविधा में कई ज्ञात मुद्दे थे और .NET Framework 4.5 बीटा से हटा दिया गया है। इसे किसी भी भावी रिलीज में शामिल नहीं किया जाएगा। इस समस्या को हल करने के लिए: कोई वर्कअराउंड उपलब्ध नहीं है। – lukaszk

+0

.NET 4 में इसका उपयोग कैसे करें? क्या यह संभव है? – mrhands

0

मुझे अभी भी एक ही समस्या का सामना करना पड़ा है।

वहाँ एक संभावित समाधान नहीं है - विंडोज मेजबान खिड़की नियंत्रण और WPF तत्व की प्रकृति के आधार आप दिखाना चाहते हैं:

मैं मेरे सक्षम करने के लिए मेरे विचार मॉडल पर बाध्य WindowsFormsHost नियंत्रण एक संपत्ति के लिए की Visibility मेजबान (और उस पर नियंत्रण) को छिपाने के लिए जब मैं उस WPF को प्रदर्शित करना चाहता हूं जिसे हम उस पर दिखाना चाहते हैं।

0

मेरी स्थिति में मेरा विंडोजफॉर्महोस्ट दो पंक्ति ग्रिड में है।निचली पंक्ति में इसमें एक स्टैकपैनल होता है जो उसमें निर्भर करता है कि इसमें क्या है। मैं ग्रिड की वास्तविक हाइट से इसकी वास्तविक वास्तविकता को घटाकर अपने विंडोजफॉर्महोस्ट का आकार बदलने के लिए स्टैकपैनेल के लेआउट अपडेटेड ईवेंट को संभालता हूं। ActualHeight ऊंचाई नहीं उपयोग करना सुनिश्चित करें।

 void ResizeWinhost() 
    { 
     mainGrid.UpdateLayout(); 
     detailPanel.UpdateLayout(); 
     winHost.Height = mainGrid.ActualHeight - detailPanel.ActualHeight - 5; 
    } 
संबंधित मुद्दे