पर कोई घटना पारित नहीं हुई है, मैं डब्ल्यूपीएफ में एक अच्छा "ड्रैग और ड्रॉप जोन" बनाने की कोशिश कर रहा हूं जो मुख्य एप्लिकेशन में खींचा जाने पर एडोर्नर परत में प्रदर्शित होता है। समस्या यह है कि मुझे अपने सजावट से कोई घटना नहीं मिलती है, भले ही दस्तावेज़ीकरण के अनुसार यह सभी इनपुट घटनाओं को प्राप्त करे, क्योंकि यह उच्च जेड-ऑर्डर में है।डब्ल्यूपीएफ एडॉर्नर परत
मेरी समस्या को डीबग करने के लिए मैंने एक बहुत ही सरल उदाहरण बनाया जहां मेरे पास केवल एक बटन के साथ उपयोगकर्ता नियंत्रण है। यह उपयोगकर्ता नियंत्रण adorner परत में प्रदर्शित होता है, लेकिन मैं बटन पर क्लिक नहीं कर सकता। क्यूं कर? मैंने क्या गल्त किया है?
मेरे adorner वर्ग इस तरह का निर्माण किया है:
public ShellOverlayAdorner(UIElement element, AdornerLayer adornerLayer)
:base(element)
{
_adornerLayer = adornerLayer;
_overlayView = new AdornedElement();
_overlayView.AllowDrop = true;
_adornerLayer.Add(this);
}
और द्वारा
private void Window_Loaded(object sender, RoutedEventArgs e)
{
adornerLayer = AdornerLayer.GetAdornerLayer(MyTopGridWithButtonInIt);
ShellOverlayAdorner shell = new ShellOverlayAdorner(MyTopGridWithButtonInIt, adornerLayer);
}
मुख्य विंडो में बनाई गई है मैं किसी भी घटनाओं मेरे नियंत्रण से बिल्कुल भी नहीं मिलता है, कोई माउस क्लिक यानी , माउस ओवर, बटन क्लिक। मैं adorner परत में बटन भी क्लिक नहीं कर सकता। मैंने क्या गल्त किया है?
यह मेरे लिए ठीक काम कर रहा है ... आप अपने adorner पर गलत पर IsHitTestVisible सेट नहीं किया क्या आप वाकई रहे हैं? –
हमम .. अजीब, क्योंकि मैं इसे बनाने वाली सभी परीक्षण परियोजनाओं के लिए यह प्राप्त करता हूं। नहीं, मैंने IsHitTestVisible को गलत पर सेट नहीं किया है। मैंने परिवर्तन करने के लिए इसे सही और गलत दोनों पर सेट करने का परीक्षण किया है, लेकिन कुछ भी नहीं होता है। – Johanna