2011-03-02 10 views
25

वहाँ एक रास्ता मेरे Windows Phone 7 एप्लिकेशन में वर्तमान पृष्ठ के सक्रिय उदाहरण पाने के लिए है? मैं प्रलेखन पढ़ रहा हूं और इसका कोई फायदा नहीं उठा रहा हूं।कैसे मेरी WP7 के अनुप्रयोग में वर्तमान पृष्ठ पाने के लिए

मेरे उदाहरण में मैं एक वैश्विक पाश जो सक्रिय पेज के एक सार्वजनिक प्रणाली को बुलाती है चल रहा हूँ।

उदाहरण के लिए, एप्लिकेशन Page1.xaml पर लोड होता है, अगर मेरा लूप इस पृष्ठ के साथ सक्रिय हो जाता है तो मुझे पेज 1 कोड-पीछे में एक लूप को आग लगाना होगा। यदि पेज 2 सक्रिय है तो मुझे पेज 2 कोड-बैक फ़ाइल में एक अलग विधि को फायर करने की आवश्यकता होगी।

नोट: अलग-अलग पृष्ठों में मेरे तरीकों स्थिर है क्योंकि मैं उदाहरण चर के लिए उपयोग की आवश्यकता नहीं हो सकता है। तो न केवल मैं सक्रिय पेज (जो किसी प्रकार की एक चर के माध्यम से प्राप्त किया जा सकता है) की जरूरत है, लेकिन मैं वर्तमान पृष्ठ के उदाहरण की जरूरत है।

उत्तर

38

के साथ रिकॉर्ड करने का अवसर के रूप में उपयोग करते हैं, आप रूट फ्रेम से वर्तमान पृष्ठ प्राप्त कर सकते हैं। डिफ़ॉल्ट App वर्ग है कि परियोजना में उत्पन्न होता है एक RootFrame संपत्ति प्रकार PhoneApplicationFrame की पहले से ही है कि है। Content संपत्ति के मूल्य वर्तमान पृष्ठ और PhoneApplicationPage लिए डाली जा सकती है।

var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage;

Application वर्ग पर RootVisual संपत्ति का संदर्भ एक ही फ्रेम, लेकिन एक UIElement है, तो आप के बजाय निम्नलिखित इस्तेमाल कर सकते हैं:

var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;
+0

इस तकनीक का उपयोग करना, कैसे मैं एक विधि कॉल करने के लिए आगे बढ़ना होगा फोन एप्लिकेशंस पेज में? यह currentPage.myMethod() की अनुमति नहीं देता है; – andersra

+1

आप परिणामी पृष्ठ पर सार्वजनिक तरीकों को उसी तरह से कॉल कर सकते हैं जिस तरह से आप किसी अन्य श्रेणी में होंगे। अपने स्वयं के पेज पर विधियों को कॉल करने के लिए, आपको परिणाम को उस विशिष्ट वर्ग में डालना होगा ताकि वह सार्वजनिक तरीकों तक पहुंच सके। –

+0

क्या मुझे यहां कुछ याद आ रही है? 'var currentPage = ((ऐप) एप्लिकेशन। वर्तमान) .RootFrame. PhoneApplicationPage के रूप में सामग्री; वर्तमान पृष्ठ = वर्तमानपृष्ठ नामस्थान के रूप में। MyPage; ' – andersra

5

आप NavigationService.CurrentSource http://msdn.microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v=VS.92).aspx

का उपयोग कर हालांकि, मौजूदा पेज ही मुझे लगता है कि आप इस बनाए रखने के लिए की आवश्यकता होगी के कहने पाने के लिए वर्तमान XAML पृष्ठ URL प्राप्त कर सकते हैं अपने आप को - एक तरह से सभी के वारिस होगा एक साझा अमूर्त वर्ग से आपके पृष्ठ जो OnNavigatedTo को ओवरराइड करते हैं और फिर इसे सिंगलटन (शायद आपकी ऐप क्लास)

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