6

में वापस नेविगेट करते समय पृष्ठ कन्स्ट्रक्टर को फिर से कॉल किया जाता है। मैंने पाया है कि विंडोज 8 ऐप्स में, इस पृष्ठ पर वापस जाने पर एक पेज के कन्स्ट्रक्टर को हमेशा कॉल किया जाता है, हालांकि यह विंडोज फोन 7 ऐप्स में नहीं है ।विंडोज 8 सी # ऐप

इस व्यवहार के कारण उस पृष्ठ के सभी गुण खो जाते हैं और आपको किसी भी तरह से स्टोर करने की आवश्यकता होती है और पृष्ठ को पुनः सक्रिय करने के बाद उन्हें पुन: असाइन करने की आवश्यकता होती है। फिलहाल मैं डेटा को बचाने और LoadState विधि में डेटा को पुन: असाइन करने के लिए SaveState विधि का उपयोग कर रहा हूं। नमूना ग्रिड/स्प्लिट ऐप में दोनों विधियां अंतर्निहित हैं।

मुझे आश्चर्य है कि यह इस तरह से क्यों डिज़ाइन किया गया है और यदि पृष्ठ के उदाहरण को बनाए रखने का कोई बेहतर तरीका है?

+1

+1 इसे कॉल करने के लिए +1। यह मुझे गार्ड से पकड़ा। यह एक बड़ा बदलाव है और इसका मतलब है कि पूरी तरह से अपने राज्य और वीएम जीवन चक्र पर पुनर्विचार करना। –

उत्तर

5

आप पेज.NavigationCacheMode = NavigationCacheMode सेट कर सकते हैं। प्रत्येक पृष्ठ के लिए आवश्यक है जिसे आप स्मृति में रखना चाहते हैं, लेकिन ध्यान दें कि आपको यह सुनिश्चित करना होगा कि उपयोगकर्ता अंतहीन रूप से इन पृष्ठों के माध्यम से नेविगेट नहीं कर सकते क्योंकि यह स्मृति को रिसाव करेगा।

+0

धन्यवाद! बस आश्चर्य है कि कोई स्मृति समस्या क्यों होगी? क्या इसके लिए कोई अच्छा अभ्यास है? –

+0

ठीक है, यदि आप पृष्ठों को स्मृति में रखते हैं - किसी भी स्मृति को किसी पृष्ठ पर तब तक रिलीज़ नहीं किया जाएगा जब तक आप पृष्ठ को पीछे और आगे के ढेर से हटा नहीं देते। यदि आप किसी भी महत्वपूर्ण मात्रा में स्मृति आवंटित करते हैं - तो आप इसे ऑननविगेटेड में कर सकते हैं और इसे ऑननविगेटेड फ्रॉम में रिलीज़ कर सकते हैं, लेकिन मुझे लगता है कि इसे छोड़ने का सबसे अच्छा तरीका यह है कि कोई पेज इंस्टेंस कैशिंग नहीं है। –

+0

धन्यवाद, मैं इसका परीक्षण करूंगा। –

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