वहाँ
WPF में Window
रों तक पहुँचने के तरीके के एक नंबर रहे हैं। आप कई खुला है, तो आप इस तरह के माध्यम से उन्हें पुनरावृति कर सकते हैं:
foreach (Window window in Application.Current.Windows) window.Close();
आप कस्टम Window
एक विशेष प्रकार की थी, तो आप इस इस्तेमाल कर सकते हैं:
foreach (Window window in Application.Current.Windows.OfType<YourCustomWindow>())
((YourCustomWindow)window).DoSomething();
तुम सिर्फ एक के बाद कर रहे हैं MainWindow
के संदर्भ में है, तो आप बस इस का उपयोग कर सकते हैं:
Window mainWindow = Application.Current.MainWindow;
हालांकि, इस विधि का उपयोग कर, इस बात की संभावना है कि यहवापस आ जाएगी है
// From inside MainWindow.xaml.cs
Application.Current.MainWindow = this;
हालांकि यह ध्यान दिया जाना चाहिए, कि @woutervs सही है ... आप Window
से यूआई नियंत्रण तक पहुँचने नहीं होना चाहिए: इस मामले में, यह के निर्माता में इस संपत्ति के लिए सुनिश्चित करें कि आप MainWindow
सेट है कि लाइब्रेरी कक्षाओं में है। आपको वास्तव में डेटा को ListBox.ItemsSource
पर संग्रहित करना चाहिए और फिर इसके बजाय डेटा संग्रह में हेरफेर करना चाहिए।
अद्यतन >>
मैं नहीं जानता कि क्यों अपने Application.Current
वस्तु null
है ... क्योंकि आप किसी भिन्न AppDomain
में अपने वर्ग पुस्तकालय लोड कर दिया है यह हो सकता है। किसी भी तरह से, मुझे लगता है कि आप बड़ी तस्वीर खो रहे हैं। वास्तव में कोई कारण नहीं है कि क्लास लाइब्रेरी क्लास को मुख्य Window
के संदर्भ की आवश्यकता क्यों होनी चाहिए।
यदि आपको डेटा संग्रह पर कुछ काम करने की ज़रूरत है, तो बस डेटा संग्रह को पीछे से कोड या अपने व्यू मॉडल से पास करें। एक बार काम पूरा होने के बाद, बस इसे यूआई पर वापस पास करें जहां आपके पास ListBox
और/या संग्रह है जो ItemsSource
संपत्ति से जुड़ा हुआ संग्रह है।
एक WPF ListBox आपके सूची बॉक्स में संपत्ति रखने के बजाय बाध्यकारी है, आपके पास अपने स्रोत वाले स्रोत में एक संपत्ति होनी चाहिए, और उन्हें सूची बॉक्स में जोड़ना चाहिए (LoggerList.ItemSource = myList; फिर आप अपने बाध्य करने में सक्षम होंगे कई खिड़कियों के लिए कक्षाएं और इसलिए आप उनका उपयोग करने में सक्षम होंगे। जिस तरह से आप इसे संभालने का तरीका सही तरीका नहीं है। आपको बाध्यकारी और मूल WPF उदाहरणों को देखना चाहिए। – woutervs
इसे आज़माएं: 'विंडो पैरेंटविंडो = एप्लिकेशन। वर्तमान। MainWindow' –
हाय, विंडो पैरेंट विन्डो = एप्लिकेशन.क्यूरेंट.माइनविंडो के साथ इसे आजमाया। लेकिन मुझे लॉगरलिस्ट नहीं मिल सकता है। – user2644964