wpf - किसी अन्य नियंत्रण की रिश्तेदार स्क्रीन स्थिति में एक पॉपअप बाध्यकारी




popup screen (2)

मैं एक जटिल पॉपअप (उस पर एक ग्रिड के साथ 99 का कैनवास जेड-इंडेक्स ...) लिख रहा हूं, कि मैं उस बटन को "संलग्न" करना चाहूंगा जो उसे खोलता है और उस बटन का अनुसरण करें जहां कहीं भी जाता है स्क्रीन। उदाहरण के लिए, यदि बटन एक सूची बॉक्स या XamDataGrid में है, तो मैं पॉपअप को बटन का अनुसरण करना चाहूंगा क्योंकि यह स्क्रॉल करता है। अगर यह एक विस्तारक के नीचे है, तो मैं इसे बटन से जुड़ा रहना चाहता हूं जब फैलाने वाला इसे आगे बढ़ने देता है।

कोई विचार?


मुझे यकीन नहीं है कि यह आपके लिए स्वतः अपडेट होगा या नहीं, लेकिन नियुक्तिक्षेत्र संपत्ति आपको पॉपअप की स्थिति के संबंध में एक नियंत्रण निर्दिष्ट करने की अनुमति देती है। अगर वह काम नहीं करता है, तो हो सकता है कि कस्टमपॉपअप प्लेसमेंट कॉलबैक चाल चल जाएगा?


Popup का उपयोग करते समय, न तो PlacementTarget CustomPopupPlacementCallback और न ही CustomPopupPlacementCallback Popup PlacementTarget CustomPopupPlacementCallback का प्रयोग पॉपअप के मूल रूप से दिखाई देने के बाद किया जाता है। इसलिए इन गुणों का कोई भी उपयोग पॉपअप बटन को ट्रैक करने की अनुमति नहीं देगा जैसा कि वह चलता है

आप की इच्छा को प्राप्त करने के कई तरीके मेरे लिए होते हैं:

  1. बटन के लिए एक कस्टम Adorner संलग्न और इसके अंदर पॉपअप डाल दिया। नुकसान: पॉपअप बटन या आसपास के तत्वों से जुड़ा नहीं है, इसलिए यह उनके गुणों और डेटा कंटैक्सटेक से प्राप्त नहीं करेगा।

  2. बटन को कस्टम Adorner संलग्न करें। इस शराबी को मापने और कॉल की व्यवस्था की जाएगी जब बटन AdornerLayer से AdornerLayer , जिससे आप मैन्युअल रूप से Popup स्थिति को अपडेट कर सकते हैं। जब तक आपके AdornerDecorator आपकी Window सापेक्ष नहीं चलता (जैसे कि यह Window का प्रत्यक्ष बच्चा है), तब तक आप आसानी से AdornerLayer को खिड़की के आकार में परिवर्तनों की निगरानी से स्थानांतरित कर सकते हैं। नुकसान: कोड के लिए जटिल और सही प्राप्त करें।

  3. बिल्कुल Popup उपयोग न करें इसके बजाय एक <Grid> बटन के साथ एक <Canvas> शून्य चौड़ाई और ऊंचाई और वांछित स्थान के साथ लपेटें अंदर <Canvas> एक उचित ZIndex के साथ पॉपअप के लिए UserControl जोड़ें। यह कैनवास के किनारे का विस्तार करेगा, जो कि WPF में ठीक है। Popup नियंत्रण का उपयोग करने के बजाय केवल UserControl की दृश्यता को नियंत्रित करें नुकसान: वास्तव में पूरी तरह से अन्य सभी वस्तुओं के शीर्ष पर नहीं होगा, खिड़की के किनारे का विस्तार नहीं कर सकता (हालांकि, XBAP के लिए कोई समस्या नहीं हो सकती है)





xbap