2010-03-17 5 views
6

मैंने डब्ल्यूपीएफ पॉपअप कंट्रोल के साथ खेला है और जहां तक ​​मैं देख सकता हूं, दृश्यता संपत्ति अनिवार्य है।पॉपअप के IsOpen और दृश्यता गुणों के बीच अंतर?

यदि आपके पास IsOpen = True के साथ पॉपअप है, तो यह दृश्यता = संकुचित होने पर भी दिखाई देगा।

यदि आपके पास IsOpen = False के साथ पॉपअप है, तो इसकी दृश्यता को ध्वस्त कर दिया जाएगा, और जब ओपन ओपन सही हो जाए तो "संक्षिप्त" रहेगा, और यह दिखाई देगा। (यानी आपके पास स्क्रीन पर दिखाई देने वाली कुछ चीज होगी, भले ही स्नूप कहता है कि यह संक्षिप्त हो गया है।)

पॉपअप नियंत्रण में इन दोनों गुणों का अधिकार क्यों है? क्या मुझसे कोई चूक हो रही है?

उत्तर

2

मुझे विश्वास है कि आप सही हैं ... यह बहुत अधिक अनिवार्य है। मुझे लगता है कि मुद्दा यह है कि Visibility संपत्ति UIElement से विरासत में मिली है और इसे "सामान्य दृश्य प्रतिनिधित्व होना चाहिए" के रूप में व्याख्या किया जा सकता है। यह "है में डिफ़ॉल्ट स्थिति ... यानी

एक Popup के बाद से किसी भी दृश्य प्रतिनिधित्व नहीं है:। जब यह बंद है, संपत्ति बहुत मतलब यह नहीं है IsOpen, तथापि, एक व्यवहार आधारित संपत्ति का अधिक है ... यानी: "क्या किसी उपयोगकर्ता को मेरी सामान्य रूप से छिपी हुई सामग्री के साथ बातचीत करने की अनुमति दी जानी चाहिए?" या शायद मैं सिर्फ माइक्रोसॉफ्ट के काम को न्यायसंगत बना रहा हूं।

दिन के अंत में, यूआई का प्रतिनिधित्व करने वाला कुछ भी UIElement और इसलिए Visibility संपत्ति प्राप्त होती है ... यहां तक ​​कि उन मामलों में जहां इसका कोई मतलब नहीं है।

+0

@ बेन वॉन हैंडॉर्फ़: "... यूआईएलमेंट से यूआई प्रस्तुति विरासत में प्राप्त कुछ भी है और इसलिए दृश्यता संपत्ति प्राप्त होती है ... यहां तक ​​कि उन मामलों में जहां इसका कोई मतलब नहीं है।" दूसरे शब्दों में, मैं कई तरह की संपत्तियों को खोजने की उम्मीद कर सकता हूं जो बेकार हैं, सिर्फ इसलिए कि वे विरासत में हैं? – cfouche

+0

मुझे नहीं लगता कि उनमें से कई बेकार होंगे, लेकिन यह हमेशा संभव है। यह मामला कुछ हद तक अजीब है, क्योंकि अगर वे 'ओपन' के लिए दृश्यता का पुन: उपयोग करते हैं जो अधिकांश डेवलपर्स को आश्चर्यचकित करेगा। यह एक अपवाद मामला है क्योंकि पॉपअप में "सामान्य" दृश्य प्रतिनिधित्व नहीं है, जबकि 'UIElement' से प्राप्त होने वाली लगभग हर चीज है (मैं अपने सिर के शीर्ष से दूसरे काउंटर-उदाहरण के बारे में नहीं सोच सकता)। –

0

एमएसडीएन दोनों के लिए एक पूर्ण माध्य और उद्देश्य देता है।

Popup.IsOpen - एक मान प्राप्त करता है या सेट करता है जो दर्शाता है कि पॉपअप दिखाई दे रहा है या नहीं।

Popup.Visibility - इस तत्व के उपयोगकर्ता इंटरफ़ेस (UI) दृश्यता को प्राप्त या सेट करता है। यह UIElement से विरासत में मिला है।

+1

हाँ - मैंने प्रश्न पोस्ट करने से पहले उन दो विवरणों को पढ़ा। पॉपअप। दृश्यता विवरण कहता है "इस तत्व के उपयोगकर्ता इंटरफ़ेस (UI) दृश्यता को प्राप्त या सेट करता है"। लेकिन यह बिल्कुल बात है - यह नहीं है। – cfouche