2010-06-16 12 views
6

में पेज या विंडोज बनाना, मैं WPF का उपयोग करने के लिए नया हूं। मेरे पास निम्न प्रोग्राम है जो मैं बनाना चाहता हूं: - आवेदन एक बटन -उपयोगकर्ता क्लिक बटन के साथ खुलता है और यह उन्हें विभिन्न इनपुट के साथ एक नए पृष्ठ पर ले जाता है।डब्ल्यूपीएफ

मैं इस बारे में उलझन में हूं कि मुझे ऐसा करने की आवश्यकता है। मैंने एक नई विंडो खोलने की कोशिश की, लेकिन मैं नहीं चाहता कि एक खिड़की खुल जाए, मैं चाहता हूं कि यह एक खिड़की हो। मैंने नेविगेशन सेवा का उपयोग करके एक नया पृष्ठ बनाने और इसे नेविगेट करने का प्रयास किया लेकिन इसे काम पर नहीं मिला।

असल में मैं वर्कफ़्लो बनाना चाहता हूं जहां उपयोगकर्ता कुछ सामान में प्रवेश करता है, अगले बटन पर क्लिक करता है और कुछ और जानकारी दर्ज करने के लिए उसे एक नए पृष्ठ पर ले जाया जाता है। क्या कोई मुझे सही दिशा दिखा सकता है?

उत्तर

7

अपने आवेदन में पेजों का उपयोग करें और उनके बीच स्विच करने के लिए नेविगेशन सेवा का उपयोग करें।

<Button Content="Next" Click="NextClicked" /> 

और यह आपकी Page1.xaml.cs में:

उदाहरण के लिए, अगर आप अपने paplication में दो पृष्ठों है, "पृष्ठ 1 'और' पृष्ठ 2" आप Page1.xaml में निम्नलिखित शामिल कर सकते हैं:

void NextClicked(object sender, RoutedEventArgs e) 
{ 
    NavigationService.Navigate(new Page2()); 
} 

वैकल्पिक रूप से आप इस इस्तेमाल कर सकते हैं:

NavigationService.Navigate(new Uri("Page2.xaml", UriKind.Relative)); 

आम तौर पर यह पहली बार करना आसान है, क्योंकि y कहां पेज 2 के गुण भी सेट कर सकते हैं। उदाहरण के लिए, यदि पृष्ठ 2 एक सार्वजनिक "CurrentItem" है संपत्ति आप कह सकते हैं:

NavigationService.Navigate(new Page2 { CurrentItem = this.Something }); 

आप ऐसा नहीं कर सकते कि उरी आधारित सिंटेक्स के साथ।

तुम भी विभिन्न पृष्ठों के उदाहरण (पृष्ठ 1, पृष्ठ 2, आदि) बना सकते हैं और उन्हें अपने आवेदन वस्तु में स्टोर है, तो इस तरह उन्हें करने के लिए स्विच:

NavigationSerivce.Navigate(App.Page2); 

इस तरह अगर तुम कभी बाद में पृष्ठ 2 पर नेविगेट आप बिल्कुल वही पेज 2 ऑब्जेक्ट प्राप्त करेंगे। वैकल्पिक रूप से आप इसके साथ मदद करने के लिए नेविगेशन सेवा की जर्नलिंग सुविधा का उपयोग कर सकते हैं।

1

नेविगेशन सेवा का उपयोग ऐसा करने का सही तरीका है। आपको अपने पृष्ठों को दिखाने के लिए अपनी विंडो में एक फ्रेम जोड़ना होगा, फिर नेविगेशन सेवा के साथ उनके बीच नेविगेट करना होगा।

+0

मैं यह कैसे करूँगा? उदाहरण के लिए, मेरे पास मेरी मुख्य विंडो में एक फॉर्म है जो एक स्रोत को पृष्ठ 1.xaml पर इंगित करता है। पेज 1.xaml पर मेरे पास एक बटन है और क्लिक ईवेंट में निम्न कोड का उपयोग किया गया है: यह.NavigationService.Navigate ("Page2.xaml"); ऐसा लगता है कि पृष्ठ पर "पृष्ठ 2.xaml" टेक्स्ट दिखाएं और वास्तविक पृष्ठ नहीं। – cmptrer

0

आप अपने एप्लिकेशन ऑब्जेक्ट के मेनविंडो संदर्भ को किसी अन्य विंडो ऑब्जेक्ट में बदल सकते हैं।

Application.Current.MainWindow = new SecondWindowToBeDisplayed(); 
2

प्रारंभ में ऐसा नहीं होना चाहिए कि इसका क्या उपयोग किया जाना चाहिए: पेज या विंडोज़। हालांकि, आवेदन के इच्छित लक्ष्य को देखते हुए, मैं पेजों के बजाय उपयोगकर्ता नियंत्रण का उपयोग करने का सुझाव दूंगा, क्योंकि पेज वेब से संबंधित सामग्री पर ध्यान केंद्रित करते हैं, हालांकि इन्हें स्टैंड अकेले अनुप्रयोगों में भी इस्तेमाल किया जा सकता है। another post में एक और तर्क दिया गया है जो MSDN-documentation का जिक्र कर रहा है, और यह बताता है कि एक पृष्ठ का उपयोग करने में नेविगेशन विन्डो जिसे होस्ट किया गया है, उस सामग्री का उदाहरण याद नहीं है जो नेविगेट किया गया है और इस प्रकार अन्य WPF- तकनीकों की आवश्यकता है अपने नेविगेशन इतिहास में उस सामग्री को स्टोर करें।

नेविगेशनविंडो नेविगेशन इतिहास में किसी सामग्री ऑब्जेक्ट का उदाहरण संग्रहीत नहीं करता है।इसके बजाय, NavigationWindow नेविगेशन इतिहास का उपयोग करके प्रत्येक बार सामग्री ऑब्जेक्ट का एक नया उदाहरण बनाता है। यह व्यवहार अत्यधिक स्मृति खपत से बचने के लिए डिज़ाइन किया गया है जब बड़ी संख्या में और सामग्री के बड़े टुकड़ों को नेविगेट किया जा रहा है। नतीजतन, सामग्री की स्थिति को एक नेविगेशन से अगले में याद नहीं किया जाता है। हालांकि, डब्ल्यूपीएफ कई तकनीकों को प्रदान करता है जिसके द्वारा आप नेविगेशन इतिहास में सामग्री के एक टुकड़े के लिए राज्य का एक टुकड़ा स्टोर कर सकते हैं।

यदि आप उपयोगकर्ता नियंत्रण का उपयोग करते हैं, तो आपको कोई समस्या नहीं होगी यदि आपका लक्ष्य किसी मूल एप्लिकेशन को बनाना है। आप इसके बजाय UserControls का उपयोग करने के लिए उदाहरण के रूप में this टेम्पलेट डाउनलोड कर सकते हैं।