F# how to set content on WPF Label programmatically -
एफ # कोड
ओपन सिस्टम ओपन सिस्टम। विंडोज़ ओपन सिस्टम। विन्डोज़। कंट्रोल्स को संसाधन लॉकेटर दें = नया उरी ("/ कंसोल अनुप्रयोग 3; घटक / मेन वाइंडो। एक्सएमएल", उरीकिंड। रिलेवेटिव) lbl2 = (application.LoadComponent (resourceLocator):? & Gt; विंडो) .फंडनाम ("एलबीएल"):? & Gt; लेबल दें tb = (Application.LoadComponent (resourceLocator):? & Gt; विंडो) .FindName ("tb"):? & Gt; TextBlock let tbo = (Application.LoadComponent (resourceLocator):? & Gt; विंडो) .FindName ("tbo"):? & Gt; पाठ बॉक्स मान दें = "रॉक!" चलिए क्लिक करेंबटन = मज़ेदार _ - & gt; Lbl2.Content & lt; - "रॉक!" Let loadwindow () = संसाधनोलोकेटर = नई उरी ("/ कंसोल अनुप्रयोग 3; घटक / मुख्य विंडो। एक्सएमएल", उरीकिंड। रिलेटीव) जाने दें विंडो = एप्लिकेशन.लोडकंपनेन्ट (संसाधनलोकेटर):? & Gt; विंडो (window.FindName ("clickButton"):? & Gt; बटन। क्लिक करें.ऐड (क्लिक बटन) विंडो [& lt; STAThread & gt;] (नया एप्लिकेशन ())। रन (लोडवंडो ()) | & gt; अनदेखा करें मेरा एक्सएमएल WPF कोड:
& lt; विंडो xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation "Xmlns: x =" http://schemas.microsoft.com/winfx/2006/xaml "शीर्षक =" मुख्य विंडो "ऊंचाई =" 300 "चौड़ाई =" 500 "& gt; & LT; ग्रिड & gt; & Lt; बटन का नाम = "क्लिकबटन" सामग्री = "मुझे क्लिक करें!" ऊँचाई = "40" चौड़ाई = "150" / & gt; & Lt; लेबल नाम = "एलबीएल" सामग्री = "लेबल" क्षैतिज एलाइमेंट = "वाम" मार्जिन = "198,40,0,0" वर्टिकलएलिन्मेंट = "शीर्ष" / & gt; & Lt; TextBlock नाम = "टीबी" क्षैतिज एलाइन्मेंट = "वाम" मार्जिन = "198,201,0,0" टेक्स्टव्यापिंग = "लपेटें" पाठ = "टेक्स्टब्लॉक" वर्टिकलएलिन्मेंट = "शीर्ष" / & gt; & Lt; टेक्स्ट बॉक्स नाम = "टीबीओ" क्षैतिज एलाइन्मेंट = "वाम" ऊँचाई = "23" मार्जिन = "340,198,0,0" टेक्स्टवॅपिंग = "लपेटें" पाठ = "टेक्स्ट बॉक्स" वर्टिकलएलिन्मेंट = "टॉप" चौड़ाई = "120" / & gt; & Lt; / ग्रिड & gt; & Lt; / विंडो & gt; मैं एक लेबल क्लिक करके एक लेबल की सामग्री: एलएलएल बदलना चाहता हूं, लेकिन किसी कारण से यह काम नहीं कर रहा है, लेकिन यह देख नहीं सकता कि क्यों
समस्या, इस मामले में, यह है कि आप घटक को एक से अधिक बार लोड कर रहे हैं जब आप clickButton को कॉल करते हैं, तो यह एक बद्ध मूल्य के परिणाम का उपयोग कर रहा है जो मुख्य आवृत्ति से अलग भरी हुई विंडो आवृत्ति तक सीमित था। आपको इस पर काम करने में सक्षम होना चाहिए, इस मामले में, पहले से ही प्रदर्शित होने वाली खिड़की पाने के लिए application.Current.MainWindow का उपयोग करके: ओपन सिस्टम ओपन सिस्टम। विंडोज़ ओपन सिस्टम.विंडो। कंट्रोलल्स संसाधन लोकेटर = नया उरी ("/ कंसोल अनुप्रयोग 3; घटक / मेन विंड।।)" // यह एक फ़ंक्शन होने की आवश्यकता है, इसलिए इसका मूल्यांकन नहीं किया जाता है, खिड़की बनाई जाने से पहले getLbl2 () = अनुप्रयोग। वर्तमान। मैनविंडो.फंडनाम ("एलबीएल"):? & Gt; लेबल मान दें = "रॉक!" चलिए क्लिक करेंबटन = मज़ेदार _ - & gt; चलो lbl = getLbl2 () lbl.Content & lt; - "रॉक!" Let loadwindow () = संसाधनोलोकेटर = नई उरी ("/ कंसोल अनुप्रयोग 3; घटक / मुख्य विंडो। एक्सएमएल", उरीकिंड। रिलेटीव) जाने दें विंडो = एप्लिकेशन.लोडकंपनेन्ट (संसाधनलोकेटर):? & Gt; विंडो (window.FindName ("clickButton"):? & Gt; बटन। क्लिक करें.ऐड (क्लिक बटन) विंडो [& lt; STAThread & gt;] (नया एप्लिकेशन ())। रन (लोडवंडो ()) | & gt; इस बात पर ध्यान न दें यह कहा जा रहा है, मैं वास्तव में अपने WPF संसाधनों के साथ काम करने के लिए उपयोग करने की सिफारिश करूँगा। प्रकार प्रदाता आपको अपने डेटा पर सुरक्षित पहुंच प्रदान करेगा, और जीवन को सरल बना देगा।
इसे FsXaml का उपयोग करके फिर से लिखा जा सकता है:
खुले सिस्टम ओपन सिस्टम। ओपन सिस्टम। इंडोज़। नियंत्रण ओपन एफएसएक्सएमएल टाइप मेन वाईंडो = एक्सएएमएल & lt; "मेन वांडो। एक्सएमएल" & gt; Letwindow () = खिड़की = मुख्य विंडो ()। बनाएँ। आरटीओ () दें accessor = mainwindow.Accessor विंडो accessor.ClickButton.Click.Add (मज़ा _ - & gt; accessor.lbl.Content & lt; - "रॉक!") खिड़की [ & Lt; STAThread & gt;] (नया अनुप्रयोग ())। रन (लोडविंडो ()) | & gt; ध्यान न दें FsXaml का उपयोग करते समय, आप अपने सदस्यों की पूर्ण जानकारी प्राप्त करते हैं, और अब आपको जादू स्ट्रिंग्स की आवश्यकता नहीं है।
Comments
Post a Comment