2009-08-19 17 views
6

के लिए TypeDescriptor का उपयोग करके गतिशील रूप से गुण-स्तरीय विशेषताओं को जोड़ें, मैं ग्रिड में प्रदर्शित करते समय गतिशील रूप से (जैसे ब्राउज़ करने योग्य (झूठा)) जोड़ना चाहता हूं। परिदृश्य यह है कि मेरे पास कुछ सार्वजनिक संपत्तियों के साथ एक कस्टम क्लास है। हालांकि, मैं नहीं चाहता कि सभी सार्वजनिक गुण यूआई में प्रदर्शित किए जाएं। क्या और कोई रास्ता है?संपत्ति ग्रिड

मैंने टाइपडिस्क्रिप्टर का उपयोग करने की कोशिश की। हालांकि, यह केवल प्रकार के स्तर पर काम करता है न कि संपत्ति स्तर पर। मुझे संपत्ति-स्तर पर इसका उपयोग करने के तरीके पर कोई मदद नहीं मिली।

किसी भी पॉइंटर्स की अत्यधिक सराहना की जाएगी।

+0

यह संभव है, मैंने अपने प्रश्न में पूर्ण कार्यान्वयन प्रदान किया है http://stackoverflow.com/questions/12143650/how-to-add-property-level-attribute-to-the-typedescriptor-at-runtime/12143653 – Gman

उत्तर

2

असल में यह संभव है, लेकिन मैं इसे नहीं बल्कि अस्पष्ट और खराब प्रलेखित है स्वीकार करना होगा। कुंजी System.ComponentModel.TypeDescriptionProvider से अपने स्वयं के कस्टम TypeDescriptorProvider प्राप्त करने के लिए कुंजी है। फिर आप अपना खुद का टाइप डिस्क्रिप्टर वंश वापस कर सकते हैं।

मैं ऐसा किया ViewModels और ASP.NET MVC में मेटाडाटा के बारे में एक नहीं बल्कि बुरा सीमा तय करने के लिए, लेकिन आप बस के रूप में अच्छी तरह से अपने स्वयं के अतिरिक्त मेटाडाटा को सम्मिलित करने के लिए इसका इस्तेमाल कर सकते हैं।

3

मैं पिछले कुछ दिनों से इसी क्षेत्र में काम कर रहा हूं। लंबी कहानी छोटी, मैं निष्कर्ष पर आया यह संभव नहीं है।

क्या आप रनटाइम पर विशेषताओं को लागू करने का प्रयास कर रहे हैं क्योंकि आप अपने कस्टम वर्गों के साथ "यूआई" कोड मिश्रण नहीं करना चाहते हैं?

यदि ऐसा है, तो BrowsableAttribute घटक मॉडेल (http://msdn.microsoft.com/en-us/library/system.componentmodel.aspx) का सदस्य है और यह UIF WinForms के समान अर्थ से संबंधित नहीं है।

कार्ल

संबंधित मुद्दे