दिलचस्प पोस्ट
Application.DoEvents का उपयोग () MySQL प्रतिशत की गणना बाश का उपयोग करके, आप निर्देशिका में सभी फाइलों से कैसे एक क्लासपाथ बनाते हैं? कई भाषाएं संवेदनशील क्यों हैं? स्थानीय आर पैकेज रिपॉजिटरी बनाना एक डाटाबेस से दूसरे डेटाबेस में डेटा स्थानांतरण समवर्ती HttpWebRequests की अधिकतम संख्या एक चार सरणी में एक int स्टोर करें? Std :: vector के साथ VBOs सतह के दृश्य लोड पर काली चमकती है क्या किसी वस्तु के गैर-गणनीय विरासत में मिली गुणों को प्राप्त करना संभव है? पिवोट तालिका और कंसैनेटेट कॉलम मैं एक छवि को उसके यूआरएल से एसडी कार्ड में कैसे स्थानांतरित कर सकता हूं? CGFloat- आधारित गणित कार्य? वितरण के लिए एक Android जार लाइब्रेरी बनाएं

कैसे WPL में modal संवाद करते हैं?

मैं अपना पहला आवेदन WPF में लिख रहा हूं और चाहते हैं कि उपयोगकर्ता इनपुट मोडल डायलॉग विंडो पर कुछ डेटा डाले। जाहिरा तौर पर, यह आसान नहीं है WPF में, क्योंकि माता पिता की खिड़की पूरी तरह से सक्रिय रहता है, और जिस पद्धति ने नई बाल खिड़की बनाई है, उसे रोक नहीं है और बाल विंडो को कॉल करने के लिए बंद करें ()। इसके बजाए यह आगे बढ़ता रहता है। यह वह नहीं है जिसकी मुझे चाहत है।

मैं बच्चे विंडो को कैसे खोल सकता हूं, और माता-पिता की खिड़की जारी रखने से पहले बच्चे को बंद होने के लिए माता-पिता की खिड़की की प्रतीक्षा करनी है?

Solutions Collecting From Web of "कैसे WPL में modal संवाद करते हैं?"

क्या आपने ShowDialog विधि का उपयोग करके अपनी विंडो को दिखाने का प्रयास किया?

मुख्य विंडो में संवाद विंडो पर मालिक संपत्ति सेट करने के लिए मत भूलना। यह अजीब व्यवहार से बचता है जब Alt + Tabbing, आदि।

खिड़की। दिखाओ विंडो विंडो दिखाएगी, और निष्पादन जारी रखेगी – यह एक गैर-अवरुद्ध कॉल है

Window.ShowDialog कॉलिंग थ्रेड को अवरुद्ध करेगा (थोड़े [1]), और संवाद दिखाएं। यह माता-पिता / स्वामित्व वाली विंडो के साथ संपर्क को भी बाधित करेगा। जब संवाद को खारिज कर दिया जाता है (किसी भी कारण से) ShowDialog कॉल करने वाले को लौट जाएगा, और आपको DialogResult (यदि आप चाहते हैं) का उपयोग करने की अनुमति देगा।

[1] यह डिस्पैचर पंपिंग को डिस्पैचर फ़्रेम को डब्लूपीएफ डिपाटेचर पर धकेलने से रखेगा। इससे संदेश पंप को पम्पिंग रखने का कारण होगा।

इनमें से बहुत से उत्तर सरलीकृत हैं, और अगर कोई व्यक्ति WPF शुरू कर रहा है, तो वे सभी "इन-ऐंड-आऊट्स" को नहीं जानते हैं, क्योंकि यह केवल "उपयोग करें। .ShowDialog() !" लेकिन यह तरीका है (नहीं .Show() ) जिसे आप अंतर्निहित विंडो के उपयोग को रोकने के लिए और कोड को जारी रखने से रोकने के लिए उपयोग करना चाहते हैं जब तक मोडल विंडो बंद नहीं हो जाती।

सबसे पहले, आपको 2 WPF विंडो की आवश्यकता है (एक अन्य फोन होगा।)

पहली खिड़की से, मान लें कि इसे मेन-विन्डो। एक्सएमएल कहा गया था, इसके कोड-पीछे में होगा:

 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } 

फिर अपने बटन को अपने एक्सएएमएल में जोड़ें:

 <Button Name="btnOpenModal" Click="btnOpenModal_Click" Content="Open Modal" /> 

और क्लिक Click नियमित पर राइट-क्लिक Click , "परिभाषा पर जाएं" चुनें यह आपके लिए MainWindow.xaml.cs में बनायेगा:

 private void btnOpenModal_Click(object sender, RoutedEventArgs e) { } 

उस फ़ंक्शन के भीतर, आपको अपने पृष्ठ वर्ग का उपयोग करके अन्य पृष्ठ को निर्दिष्ट करना होगा। कहें कि आप अन्य पेज "मोडल वांडो" का नाम लेते हैं, जिससे कि इसका पृष्ठ वर्ग बन जाता है और आप इसे कैसे कॉल करते हैं:

 private void btnOpenModal_Click(object sender, RoutedEventArgs e) { ModalWindow modalWindow = new ModalWindow(); modalWindow.ShowDialog(); } 

कहें कि आपके पास एक मूल्य है जिसे आप अपने मोडल संवाद पर सेट करना चाहते हैं। ModalWindow XAML में एक टेक्स्टबॉक्स और एक बटन बनाएं:

 <StackPanel Orientation="Horizontal"> <TextBox Name="txtSomeBox" /> <Button Name="btnSaveData" Click="btnSaveData_Click" Content="Save" /> </StackPanel> 

फिर एक ईवेंट हैंडलर (एक अन्य Click ईवेंट) को दोबारा बनाएं और इसे टेक्स्टबॉक्ज़ मान को सार्वजनिक स्थैतिक चर पर ModalWindow पर सहेजने के लिए उपयोग करें और इसे कॉल करें। this.Close()

 public partial class ModalWindow : Window { public static string myValue = String.Empty; public ModalWindow() { InitializeComponent(); } private void btnSaveData_Click(object sender, RoutedEventArgs e) { myValue = txtSomeBox.Text; this.Close(); } } 

उसके बाद, आपके। .ShowDialog() कथन के बाद, आप उस मान को पकड़ सकते हैं और उसका उपयोग कर सकते हैं:

 private void btnOpenModal_Click(object sender, RoutedEventArgs e) { ModalWindow modalWindow = new ModalWindow(); modalWindow.ShowDialog(); string valueFromModalTextBox = ModalWindow.myValue; } 

एक विंडो ऑब्जेक्ट को देखते हुए मेरी विंडू, मायवाइंडो। शो () इसे मॉडललेसली और माइंडोवा खोल देगा। ShowDialog () इसे मौलिक रूप से खोल देगा। हालांकि, यहां तक ​​कि बाद वाला भी ब्लॉक नहीं करता है, जो मुझे याद है।