MSDN says on event setters:EventSetters
घटना setters एक शैली है कि एक विषय संसाधन शब्दकोश में शामिल है में उपयोग नहीं किया जा सकता है। इसका कारण यह है कि रन टाइम पर एक थीम संसाधन शब्दकोश अक्सर बाइनरी एक्सएएमएल (बीएएमएल) फाइलों को ढीला होता है, और इसमें कोई स्कोप परिभाषित नहीं होता है जहां कोड-पीछे के साथ हैंडलर मौजूद हैं।
यह the first answer to this SO question द्वारा की पुष्टि की है, जिसमें कहा गया है:
एक संसाधन XAML फाइल के पीछे एक कोड नहीं हो सकता है, वे आमतौर पर "ढीला XAML" कहा जाता है। आप इसके बारे में msdn में EventSetter के बारे में पढ़ सकते हैं।
हालांकि, मैं अभी तक ईवेंट सेटर्स की सीमाओं को समझ नहीं पा रहा हूं। मैंने संसाधन शब्दकोश के लिए कोड-बैक फ़ाइल का उपयोग करने का प्रयास किया है। मैंने कहा संसाधन संसाधन में एक शैली के भीतर परिभाषित टेम्पलेट के भीतर निहित नियंत्रण की घटना के लिए एक ईवेंट हैंडलर असाइन किया है - और यह काम करता है।
दूसरी ओर, उसी संसाधन शब्दकोश में शैली में इवेंट सेटर जोड़ना, अपवाद में परिणाम देता है।
क्या मैंने एक विशेष मामला मारा है जहां यह काम करने के लिए होता है?
या टेम्पलेट में इवेंट हैंडलर सेट करना हमेशा काम करता है, लेकिन यदि ऐसा है, तो मैं एक ही संसाधन शब्दकोश में किसी शैली में इवेंट सेटर का उपयोग क्यों नहीं कर सकता?
मेरा प्रश्न करने पर निर्भर करता:
वास्तव में क्या MSDN के बयान है कि एक विषय संसाधन शब्दकोश अक्सर ढीला द्विआधारी XAML है मतलब है - कितनी बार, किन परिस्थितियों में बिल्कुल के तहत?
क्या आपने थीम संसाधन शब्दकोश के लिए कोडबेइंड का उपयोग किया था? –
@ voroninp: हाँ; सीएफ कथन के साथ अनुच्छेद "मैंने संसाधन शब्दकोश के लिए कोड-बैक फ़ाइल का उपयोग करने का प्रयास किया है।" –
रिसोर्स डिक्शनरी में कोडबेइंड हो सकता है। इस दृष्टिकोण का वर्णन मैकडॉनल्ड्स की पुस्तक - प्रो डब्ल्यूपीएफ में सी # 2010 में किया गया है। मुझे लगता है कि अक्षम स्टाइल इवेंटेटर सिर्फ डिज़ाइन द्वारा हैं। लेकिन मैं आपके साथ स्पष्ट नहीं हूं क्यों। –