कल्पना करें कि इन गुणों को UIElements (या कुछ अन्य WPF विशिष्ट ऑब्जेक्ट) के रूप में टाइप किया गया था। आप अपने नियंत्रण में ऑब्जेक्ट्स कैसे जोड़ेंगे जो UIElements नहीं थे?
आपको एक WPF ऑब्जेक्ट से प्राप्त एक रैपर प्रदान करना होगा जो आपको आवश्यक जानकारी का खुलासा करता है। अधिकांश समय रैपर को लिपटे ऑब्जेक्ट के ToString() पर कॉल करना होगा। अधिकांश प्रकार के रूप में देखकर आप ToString() का एक अच्छा पर्याप्त कार्यान्वयन प्रदान करेंगे, यह सब कुछ के लिए डेवलपर लिखने वाले रैपर बनाने के बजाय इसे कॉल करने के लिए समझ में आता है।
दूसरा, कल्पना करें कि क्या उन्हें कुछ इंटरफ़ेस के रूप में टाइप किया गया था। क्या होगा यदि आप कुछ ऐसा संवाद करना चाहते हैं जो यह इंटरफ़ेस नहीं कर सकता?एकमात्र विकल्प हैं (ए) डेवलपर ढांचे की सीमाओं के साथ रहता है या (बी) माइक्रोसॉफ्ट इंटरफ़ेस अपडेट करता है और सभी मौजूदा कोड को तोड़ देता है जो पहले ही लिखा जा चुका है।
यह भी विचार करें कि क्या आप एमवीवीएम जैसे पैटर्न का उपयोग कर रहे हैं। वर्तमान डिज़ाइन का अर्थ है कि आपके व्यू मॉडल उन गुणों का पर्दाफाश कर सकते हैं जो WPF से किसी भी तरह से बंधे नहीं हैं जो आखिरकार आपके कोड को विभिन्न तकनीकों में अधिक पुन: प्रयोज्य बनाता है।
अंत में, याद रखें कि उस वस्तु के बीच एक अंतर है जो संपत्ति का प्रतिनिधित्व करता है और जिस तरह से डब्ल्यूपीएफ उस जानकारी को प्रस्तुत करता है। E.G. यदि आप सिस्टम जैसे एक आदिम प्रकार का उपयोग करते हैं। स्ट्रिंग, डब्ल्यूपीएफ एक टेक्स्टब्लॉक बनाएगा और ToString() के परिणामस्वरूप टेक्स्ट प्रॉपर्टी सेट करेगा। यह यूआई द्वारा प्रदर्शित डेटा के बीच एक बहुत ही साफ अलगाव की अनुमति देता है और वे यूआई द्वारा प्रदान करते हैं।
उदाहरण के लिए, एक साधारण वर्ग है कि एक मेनू आइटम का प्रतिनिधित्व करता लें:
public class MenuItem
{
public string Text { get; set; }
public bool IsChecked { get; set; }
public bool IsEnabled { get; set; }
}
इस प्रकार केवल मेनू आइटम के बारे में डेटा को उजागर करता है और कैसे इस जानकारी रेंडर किया जाना चाहिए के बारे में कोई जानकारी नहीं है। वास्तव में, कक्षा के नाम के अलावा (मेनूइटम) यह मेनू आइटम के लिए भी विशिष्ट नहीं है और उसी डेटा को किसी अन्य UI नियंत्रण में उपयोग किया जा सकता है जैसे चेक किए गए सूची बॉक्स में कोई बदलाव नहीं है। यदि कक्षा ने WPF विशिष्ट उपयोगकर्ता इंटरफ़ेस तत्वों का खुलासा किया तो जानकारी को प्रत्येक अलग-अलग उपयोगकर्ता इंटरफ़ेस नियंत्रण के लिए किसी अन्य प्रकार द्वारा अनुकूलित करने की आवश्यकता होगी।
स्रोत
2012-06-17 11:25:18
मुझे लगता है कि यह अच्छा है, लेकिन क्या ऑब्जेक्ट को यूआई तत्व का कोई प्रकार नहीं होना चाहिए? टेक्स्टबॉक्स और छवि दोनों फ्रेमवर्क एलिमेंट्स हैं। केवल एक चीज मैंने देखा है कि आप असाइन कर सकते हैं कि फ्रेमवर्क एलीमेंट एक स्ट्रिंग नहीं है ... क्या वास्तव में केवल एक चीज है? यदि ऐसा है तो ऐसा लगता है कि यह 'ऑब्जेक्ट' होने का एक अच्छा कारण नहीं है क्योंकि मैं अपने स्ट्रिंग के चारों ओर एक लेबल या रैपर बना सकता हूं। – Trevor
@Rovert No, यह संपत्ति पर निर्भर करता है, अगर इसमें कोई दृश्य पहलू है और WPF के लिए इसे एक छवि में परिवर्तित करने का एक तरीका है तो यह दिखाया जाएगा। आप किसी वस्तु को * कुछ * असाइन कर सकते हैं। मेरा मानना है कि यह [TypeConversion] (http://msdn.microsoft.com/en-us/library/aa970913.aspx) के उत्पाद द्वारा Xaml मार्कअप कार्य करने के लिए आवश्यक है। –
TypeConversion के बारे में दिलचस्प बिंदु। यह वास्तव में बहुत अधिक समझ में आता है कि यह कैसे और कैसे तय करता है यह दिखा सकता है। उदाहरण के लिए, यह पता लगाने के लिए छविसोर्स को देखकर कि वे कैसे काम करते हैं, एक बड़ी भ्रम की ओर ले जाते हैं, लेकिन अब मुझे पता है कि दृश्यों के पीछे कुछ गतिशील व्यवहार होना चाहिए। धन्यवाद! – Trevor