2009-04-09 5 views
5

मैं रनटाइम पर ControlTemplate को परिभाषित करना चाहता हूं। क्या यह संभव है? मैंने ControlTemplate क्लास पर VisualTree प्रॉपर्टी देखी है। मैंने यह भी देखा है कि यह फ्रेमवर्क एलिमेंट फैक्ट्री क्लास का उपयोग करता है। हालांकि, मैं इसे काम करने के लिए प्रतीत नहीं कर सकता।रनटाइम पर एक WPF ControlTemplate को परिभाषित करें

क्या रनटाइम पर ControlTemplate बनाना संभव है?

उत्तर

8

हां, आप फ्रेमवर्क एलिमेंट फैक्टरी का उपयोग करके ऐसा कर सकते हैं। चार्ल्स पेटज़ोल्ड की "अनुप्रयोग = कोड + मार्कअप" के अध्याय 11 में इसकी एक यात्रा है, लेकिन बुनियादी विचार यह है कि आप टेम्पलेट रूट तत्व (और किसी भी बच्चे तत्वों के लिए आगे कारखानों) के लिए एक फ्रेमवर्क एलिमेंट फैक्टरी बनाते हैं, एक नियंत्रण टेम्पलेट बनाएं और सेट करें ControlTemplate की VisualTree प्रॉपर्टी फ्रेमवर्क एलिमेंट फैक्टरी:

FrameworkElementFactory borderFactory = new FrameworkElementFactory(typeof(Border)); 
// set properties and create children of borderFactory 
ControlTemplate template = new ControlTemplate(); 
template.VisualTree = borderFactory; 

myButtonInstance.Template = template; 
-1

डब्ल्यूपीएफ कंट्रोल क्लास में 'टेम्पलेट' संपत्ति है जिसमें आप रन टाइम पर सेट कर सकते हैं।