2012-09-16 14 views
35

इसी तरह के प्रश्न पहले पूछे गए हैं लेकिन यह प्रश्न अधिक विकल्प और जटिल वस्तुओं को पारित करने की क्षमता का पता लगाने का प्रयास करता है।एक्सएएमएल पृष्ठों के बीच मूल्य (पैरामीटर) कैसे पास करें?

सवाल यह है कि मानकों को पारित करने के लिए है, लेकिन यह वास्तव में तीन भागों में टूट जाने की आवश्यकता है ..

  1. जब एक XAML आवेदन कैसे आप पैरामीटर पास है में पृष्ठों के बीच नेविगेट?
  2. उरी नेविगेशन और मैन्युअल नेविगेशन का उपयोग करने के बीच क्या अंतर है?
  3. उरी नेविगेशन का उपयोग करते समय ऑब्जेक्ट्स (स्ट्रिंग्स नहीं) कैसे पारित किए जा सकते हैं? उरी नेविगेशन

    page.NavigationService.Navigate(new Uri("/Views/Page.xaml", UriKind.Relative)); 
    

    मैनुअल नेविगेशन का उदाहरण के

उदाहरण

page.NavigationService.Navigate(new Page()); 

इस सवाल का जवाब WP7, Silverlight, WPF और Windows 8

पर लागू होता है

नोट: विज्ञापन है सिल्वरलाइट और Windows8

के बीच ifference
  • विंडोज फोन: पृष्ठों एक उरी और एक क्वेरी स्ट्रिंग या एक उदाहरण के रूप में पारित डेटा का उपयोग कर रहे हैं पर नेविगेट
  • Windows 8: पृष्ठों मानकों प्रकार पारित करके पर भेज रहे हैं, और वस्तुओं के रूप में

उत्तर

80

तरीके मापदंडों

1. पारित करने के लिए क्वेरी स्ट्रिंग

का उपयोग करना

आप क्वेरी स्ट्रिंग के माध्यम से पैरामीटर पास कर सकते हैं, इस विधि का उपयोग करके अपने डेटा को तारों में कनवर्ट करना होगा और यूआरएल उन्हें एन्कोड करना होगा। आपको केवल सरल डेटा को पास करने के लिए इसका उपयोग करना चाहिए।

नेविगेट पेज:

page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative)); 

गंतव्य पेज:

string parameter = string.Empty; 
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) { 
    this.label.Text = parameter; 
} 

2. का प्रयोग NavigationEventArgs

नेविगेट पेज:

page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative)); 

// and .. 

protected override void OnNavigatedFrom(NavigationEventArgs e) 
{ 
    // NavigationEventArgs returns destination page 
    Page destinationPage = e.Content as Page; 
    if (destinationPage != null) { 

     // Change property of destination page 
     destinationPage.PublicProperty = "String or object.."; 
    } 
} 

गंतव्य पेज:

// Just use the value of "PublicProperty".. 

3।मैनुअल नेविगेशन

नेविगेट पेज का उपयोग करना:

page.NavigationService.Navigate(new Page("passing a string to the constructor")); 

गंतव्य पेज: उरी और मैनुअल नेविगेशन के बीच

public Page(string value) { 
    // Use the value in the constructor... 
} 

अंतर

मुझे लगता है कि यहाँ मुख्य अंतर यह आवेदन जीवन चक्र है। मैन्युअल रूप से बनाए गए पेज नेविगेशन कारणों के लिए स्मृति में रखा जाता है। इसके बारे में here और पढ़ें। (अनुशंसित)

पासिंग जटिल वस्तुओं

आप विधि एक या दो का उपयोग जटिल वस्तुओं पारित करने के लिए कर सकते हैं। आप Application कक्षा या Application.Current.Properties में डेटा स्टोर करने के लिए कस्टम गुण भी जोड़ सकते हैं।

+4

यह अतिरिक्त रूप से नोट किया जा सकता है कि 'NavigationContext.QueryString.TryGetValue ("पैरामीटर", आउट पैरामीटर) को निम्नलिखित विधि के अंदर से कॉल करने की आवश्यकता है:' ऑन ओवरविगेटेड (NavigationEventArgs e) शून्य से सुरक्षित ओवरराइड ' – vishal

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