2012-05-31 10 views
5

पर कोई प्रभाव नहीं पड़ता है मैं PRISM 4 खोज का उपयोग करके अपने विचार लोड करने के लिए डेटामैप्लेट का उपयोग कर रहा हूं। मुझे मौजूदा उदाहरणों का पुन: उपयोग करने के बजाय दृश्य/व्यूमोडेल को कई बार बनाने की आवश्यकता है, इसलिए मैंने संसाधन में एक्स: साझा = झूठा सेट किया है, लेकिन इसका केवल व्यूमोडेल पर प्रभाव पड़ता है। मैं पुष्टि कर सकता हूं कि व्यूमोडेल का पुन: उपयोग नहीं किया गया है लेकिन दृश्य है। व्यू कन्स्ट्रक्टर को केवल पहली बार बुलाया जाता है जिसे इसे पहली बार कहा जाता है। मैंने यहां समान पदों को पढ़ा है लेकिन उनके समाधान मेरे लिए काम नहीं करते हैं। मैं जानना चाहता हूं कि मैं संसाधन लोडर/लोकेटर को कैसे बढ़ा सकता हूं और यह सुनिश्चित कर सकता हूं कि यह साझा ध्वज का सम्मान करता है।डेटा टेम्पलेट x: साझा = झूठी पर

यहाँ कैसे मेरे टेम्पलेट परिभाषित किया जाता है:

<DataTemplate DataType="{x:Type CVM:MyViewModel}" x:Shared="False"> 
     <V:MyView /> 
</DataTemplate> 
+0

डिज़ाइन को बदलने के बिना कोई कामकाज? – DotnetEng

+0

पता नहीं, प्रिज्म का उपयोग नहीं किया है और वास्तव में कुछ भी सुरुचिपूर्ण नहीं सोच सकता है। –

+0

प्रिज्म में आप नियंत्रण करते हैं यदि आप सिंगलटन चाहते हैं या 'पार्टक्रेशन पॉलिसी' विशेषता के माध्यम से नहीं। 'साझा' = सिंगलटन,' NonShared' = एक नया उदाहरण। क्या आपने अपना विचार '[PartCreationPolicy (CreationPolicy.NonShared)]' के साथ सजाया है? –

उत्तर

0

सभी DataTemplate शामिल जब वस्तु (अपने मामले viewmodel में) देखने में आता है के लिए आवश्यक दृश्य ट्री बनाने के लिए एक 'Template' है।

इसलिए यदि आप में से केवल 'MyViewModel' ऑब्जेक्ट्स देखे जा रहे हैं तो आपके देखने के लिए निर्माता केवल एक बार कॉल किए जाएंगे (भले ही एकाधिक व्यूमोडल्स तत्काल हों)। यदि आपके पास कई दृश्यमान दृश्य हैं, तो आपके दृश्य के लिए कन्स्ट्रक्टर को कई बार कहा जाएगा क्योंकि आपके DataTemplate का टेम्पलेट ठीक से बनाया गया है और विजुअल ट्री में जोड़ा गया है (एक बार प्रत्येक व्यूमोडेल के लिए)।

हालांकि, यदि आपके ItemsControl (जो आपके व्यूमोडल्स रखता है) वर्चुअलाइजेशन स्विच किया गया है, तो केवल एक 'कंटेनर' (जो सरलीकृत शब्दों में आपका डेटामैप्लेट होगा) मौजूद हो सकता है, और इसका पुन: उपयोग किया जा सकता है।

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