अगर मेरे पास इस तरह से परिभाषित एक मेनू है:
& lt; मेनू & gt; & Lt; मेनूआइटम = "सामग्री" / & gt; & Lt; / मेनू & gt;
जब यह गाया जाता है, तो MenuItem के अंदर ContentPresenter इस तरह से सामग्री के साथ समाप्त होता है:
& lt; TextBlock Text = "{बाइंडिंग}" / & gt;
जिसका अर्थ है कि यह टेक्स्टब्लॉक की डिफ़ॉल्ट स्टाइल को प्राप्त करता है, जो कि हमेशा वांछनीय नहीं होता।
मुझे पता है कि मैं अपनी मेनूइस्टम को कुछ पसंद करने के लिए बदल सकता हूँ:
/ P>
& lt; MenuItem & gt; & LT; MenuItem.Header & gt; & Lt; टेक्स्टब्लॉक टेक्स्ट = "स्टफ" शैली = "{डायनेमाइरससोर्स मायस्टाइल}" / & gt; & LT; /MenuItem.Header> & Lt; / MenuItem & gt;
लेकिन यह एक कष्टप्रद आवश्यकता होगी।
मुझे पता है कि मैं ContentTemplate को स्पष्ट रूप से सेट करने के लिए MenuItem की डिफ़ॉल्ट शैली को ओवरराइड कर सकता हूं, लेकिन इसका मतलब यह होगा कि यदि सामग्री स्ट्रिंग के अलावा कुछ और थी, या यदि मेनूइस्टम के विशिष्ट उदाहरण ने एक सामग्रीटैप्लेट निर्दिष्ट किया है, तो मेरी डिफ़ॉल्ट शैली उस ओवरराइड की जाएगी - जो कि खराब होगी।
मुझे पता है कि कहीं डब्ल्यूपीएफ के जादू में एक कनवर्टर या कुछ ऐसा है जो टाइप स्ट्रिंग की सामग्री ले रहा है और डेटाटामप्लेट का निर्माण करता है जो टेक्स्टब्लॉक का उपयोग करता है, लेकिन मुझे नहीं पता कि यह कहां है मैं समझता हूं कि जादू को रोकने के लिए कुछ रास्ता मिल गया है, लेकिन जब से मैं जादुई होने की स्थिति में नहीं जा सकता, तब तक मैं यह नहीं समझ सकता कि इसे कैसे रोकना है।
कोई भी विचार?
डेविड मुलीन
आप स्ट्रिंग के लिए अपने कस्टम टेम्प्लेट को लौट सकते हैं, लेकिन अभी सभी प्रकार के लिए डिफ़ॉल्ट।
सार्वजनिक वर्ग MenuStringDataTemplateSelector: DataTemplateSelector {सार्वजनिक ओवरराइड DataTemplate SelectTemplate (ऑब्जेक्ट आइटम, निर्भरता ऑब्जेक्ट कंटेनर) {यदि (आइटम स्ट्रिंग है) // अपने टेंडर रिटर्न बेस को वापस करने के लिए। SelectionTemplate (आइटम, कंटेनर); }}
Comments
Post a Comment