xaml - Is there a simple way to set a large number of WPF Form objects? -


यह सिर्फ बुनियादी उदाहरण है:

  यदि (a == b) {textbox1। पाठ = "ए == बी"; Textbox1.IsEnabled = सच; Textbox2.Text = "EXAMPLE2"; Textbox2.IsEnabled = false; Textbox3.Text = "EXAMPLE3"; Textbox3.IsEnabled = false; TextBox4.Text = "EXAMPLE4"; TextBox4.IsEnabled = false; TextBox5.Text = "EXAMPLE5"; Textbox5.IsEnabled = false; } अन्य {textBox1.Text = "a! = B"; Textbox1.IsEnabled = false; Textbox2.Text = "EXAMPLE2"; Textbox2.IsEnabled = true; Textbox3.Text = "EXAMPLE3"; TextBox3.IsEnabled = सच; TextBox4.Text = "EXAMPLE4"; TextBox4.IsEnabled = सच; TextBox5.Text = "EXAMPLE5"; Textbox5.IsEnabled = true; }   

यह बहुत थकाऊ लगता है मैं सोच रहा था कि इस तरह की परिस्थितियों को संभालने का बेहतर तरीका क्या है? मुझे इस बात का अहसास हो रहा है कि सभी पेशेवरों ने 1x1x1x .... विधि का उपयोग करते हुए सभी चीज़ें नहीं की।

इस प्रकार के कोड को रिएक्टर करने के लिए बहुत अधिक तरीके हैं, जो कुछ अधिक संक्षिप्त देने के लिए है यह वास्तव में प्रत्येक मामले के लिए उपयुक्त विधि का चयन करने के लिए अनुभव और वरीयता का मामला बन जाता है।

उस अंत में, मैंने कई विकल्पों के नीचे सूचीबद्ध किया है जो मुझे अच्छी तरह से सेवा देते हैं:

बाध्यकारी

विशेष रूप से WPF के भीतर बाध्यकारी फॉर्म ऑब्जेक्ट को आसानी से अपडेट करने का एक बहुत ही शक्तिशाली तरीका देता है। अपने एक्सएमएल में आप प्रत्येक ऑब्जेक्ट के लिए एक डाटाकॉन्टेक्टेस्ट (आमतौर पर फॉर्म / विंडो के लिए) और बाध्य प्रॉपर्टी लागू करते हैं, जो फिर आपको अपने सी # कोड में गुणों को अपडेट करने की अनुमति देता है और उन्हें ऑब्जेक्ट में स्वचालित रूप से प्रतिबिंबित करता है।

इसका एक बड़ा फायदा यह है कि सभी थकाऊ वस्तु। पाठ = "xyz" कोड से बाहर हो।

आपके दिए गए उदाहरण में, आप एक बूलियन प्रॉपर्टी <कोड > पाठ बॉक्सों को सक्षम किया गया है जो आपके पाठ बक्से की सक्षम संपत्ति के लिए बाध्य है और प्रतिबिंबित करती है कि क्या कोई == बी।

डोमेन ऑब्जेक्ट

यह ऊपर आपके उदाहरण में बाध्यकारी दृष्टिकोण से अनुसरण करता है, ऐसा लगता है कि आपके सभी गुण केवल डेटा के दो बाहरी टुकड़ों ("a" और "b") पर निर्भर हैं। इस परिस्थिति में आप अक्सर आपके जैसे कुछ करने के लिए सीमित होते हैं, जहां आपको बहुत सारे प्रक्रियात्मक कोड के भीतर अपनी यूआई प्रॉपर्टी सेट करना पड़ता है।

हालांकि, अधिक बार आप अभिव्यक्त डोमेन ऑब्जेक्ट्स पेश कर सकते हैं, जिनमें गुण हैं UI गुणों के लिए सीधे मानचित्र उदाहरण के लिए, शायद आपके पास एक उपयोगकर्ता ऑब्जेक्ट, एक नाम संपत्ति के साथ, और उसके बाद एक उपयोगकर्ता विंडो, एक नाम पाठ बॉक्स के साथ।

अब आपके डोमेन ऑब्जेक्ट को आपकी सर्विस लेयर और डेटा एक्सेस इन्फ्रास्ट्रक्चर में कॉल द्वारा प्रदान किया जाएगा, और आपके यूआई में स्वचालित रूप से बाध्य होने के कारण

कोड रिफैक्टरिंग

यहां तक ​​कि जहां आप अधिक अभिव्यंजक वस्तुओं और बाध्यकारी उपयोग करने की क्षमता के बिना बहुत सारी संपत्तियां सीधे सेट करने की आवश्यकता है, वहां अक्सर कुछ होगा सरल पुनर्संस्थापन जो कि मदद कर सकते हैं।

आपने जो कोड उदाहरण दिया है, दो आसान पुनर्संयोजन मुझे बाहर निकलते हैं:

  1. a == b एक बूलियन मूल्यांकन है ताकि आप कुछ ऐसा कर सकें:

      bool enableTextBoxes = a == b; टेक्स्टबॉक्स 1। सक्षम = सक्षम टेक्स्टबॉक्स; TextBox2.Enabled = enableTextBoxes; // etc ...    
  2. आप if की शाखाओं में एक ही चीज़ को पाठ सेट कर रहे हैं, तो इसे लें अगर से बाहर हो और बस एक बार यह हो (हालांकि मैं यह अनुमान लगा रहा हूँ क्योंकि आप तुच्छ उदाहरण कोड दे रहे थे)।

  3. आप नियंत्रण के संग्रह से अधिक लूप, इसलिए यदि आपको बड़ी संख्या में नियंत्रण मानों को एक ही चीज़ में सेट करना है, तो आप उन पर फिर से चल सकते हैं और प्रत्येक को असाइन कर सकते हैं। / html>

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -