2010-10-13 14 views
7

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

विकल्प मैंने देखा here वेबब्राउज़र नियंत्रण के शीर्ष पर आइटम रखने के लिए पॉपअप नियंत्रण का उपयोग करता है, हालांकि पॉपअप के साथ मेरी समस्या यह है कि जब आप किसी अन्य एप्लिकेशन पर स्विच करते हैं तो वे खुले रहते हैं, और वे आपके आवेदन के साथ नहीं जाते हैं उपयोगकर्ता ऐप का आकार बदलता/चलाता है।

क्या कोई वैकल्पिक तरीका है जो मैं कर सकता हूं? एम्बेडेड वेब सामग्री एएसपीएक्स पेज है और इसलिए स्थैतिक एचटीएमएल नहीं है।

उत्तर

4

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

यदि आप स्थिर सामग्री (या उस स्रोत से सामग्री को प्रदर्शित कर रहे हैं जिसे आप नियंत्रित या प्रभावित कर सकते हैं) प्रदर्शित कर रहे हैं, तो आप इसके बजाय दस्तावेज़व्यूअर में आरटीएफ दस्तावेज़ों को प्रदर्शित करने पर विचार कर सकते हैं, जिनके पास िकी एयरस्पेस समस्याएं नहीं हैं WebBrowser नियंत्रण।

+0

दुर्भाग्यवश मेरी वेब सामग्री गतिशील – Rachel

+0

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

-2

आप इसे प्राप्त करने के लिए एडॉर्नर का उपयोग कर सकते हैं। http://msdn.microsoft.com/en-us/library/ms753340.aspx

+0

AdornerLayer अभी भी, WinForms परत नीचे गाया जा रहा है जो है WPF WebBrowser नियंत्रण – Rachel

2

एक तरह से आप एयरस्पेस मुद्दों के आसपास जा सकते हैं एक नई बेकार खिड़की बनाकर और वेबब्रोसर नियंत्रण के शीर्ष पर इसे स्थानांतरित करना। मुख्य खिड़की को स्थानांतरित/आकार/इत्यादि के साथ मुख्य समस्या इसे ठीक से रखती है।

+0

जहां प्रदान की गई है वहाँ के लिए कि पहले से ही किसी भी परियोजना है? धन्यवाद। – xmedeko

0

WPF 4.0 Chromium WebBrowser प्रोजेक्ट वेबब्राउज़र नियंत्रण में निर्मित एक विकल्प है जो आपको चाहिए जो करना चाहिए।

+0

मैंने कोशिश की है लेकिन यह मेरी मशीन पर संकलन नहीं कर पा रहा है। – Rachel

0

एक अन्य पद्धति जिसके साथ मुझे कुछ सफलता मिली है, क्लिपिंग क्षेत्रों के साथ खेलने के लिए अनिवार्य रूप से ActiveX नियंत्रण में छेद काटना था जो अनिवार्य रूप से इन वेबब्रोसर रैपर नियंत्रणों में होस्ट किया गया था। यदि मेरे पास समय है तो मैं जो पाया है उसका एक प्रदर्शन लिखूंगा और एक उदाहरण शामिल करने का प्रयास करूंगा लेकिन मैं इसे साझा करना चाहता था अगर किसी के पास देखने के लिए और अधिक समय लगे और मुझे पंच पर मार दिया जाए।

0

कामकाज जो आप कर सकते हैं वेब ब्राउजर नियंत्रण की ऊंचाई शून्य पर बनाकर, जब कुछ अन्य नियंत्रण वेब ब्राउज़र नियंत्रण के सामने आता है।

फ़िक्स: मानक फ़िक्स यह है कि आप वेब ब्राउज़र की ऊंचाई शून्य पर सेट कर सकते हैं जब आप उस पर कुछ अन्य नियंत्रण ट्रिगर करते हैं तो आपके परिदृश्य पर निर्भर करता है। नीचे, एक नमूना कार्यान्वयन है।

MainWindow.Xaml में ईवेंट शामिल हैं।

Activated="Window_Activated" 
Deactivated="Window_Deactivated" 

Xaml.cs में ऊंचाई निर्धारित करके परिदृश्य को संभाल लें।

private void Window_Activated(object sender, EventArgs e) 
{ 
    wb.Height = double.NaN; 
} 

private void Window_Deactivated(object sender, EventArgs e) 
{ 
    wb.Height = 0; 
} 
संबंधित मुद्दे