2010-06-21 9 views
12

को कैसे गति दें I कई महीनों के लिए WPF के साथ विकास कर रहा हूं। यह एक महान ढांचा है और मैं फैंसी, सुरुचिपूर्ण सामान करने में सक्षम हूं जो WinForms के साथ बहुत अधिक कठिन होता।WPF विकास

हालांकि, मुझे लगता है कि किसी भी विशेष यूआई आवश्यकताओं के बिना सामान्य "व्यापार की रेखा" प्रकार के अनुप्रयोगों के लिए, यह अभी भी XAML में यूआई को कोड करने के लिए अधिक समय लेता है, इसे खींचने और ड्रॉप करने के लिए WinForms।

उदाहरण के लिए, WinForms में, मैं केवल एक अतिरिक्त लेबल और फॉर्म पर एक अतिरिक्त टेक्स्टबॉक्स छोड़ दूंगा और सबकुछ व्यवस्थित करूँगा (सहायक लाइनों का उपयोग करके) जब तक यह अच्छा लगे। डब्ल्यूपीएफ में, मैं मौजूदा लेबल और टेक्स्टबॉक्स के गुणों को स्टाइल में फैक्टर करके शुरू कर दूंगा, इसलिए मैं उनका पुन: उपयोग कर सकता हूं; सबसे उपयुक्त लेआउट तत्व के बारे में सोचें, हो सकता है कि कुछ डॉकपैनेल/स्टैकपैनल्स को ग्रिड (या इसके विपरीत) में दोबारा दोहराएं; मार्जिन आदि के लिए अलग-अलग मानों का प्रयास करें। हालांकि मुझे डब्ल्यूपीएफ में बहुत अनुभव है, फिर भी इसमें काफी समय लगता है।

मुझे पता है कि मैं सिर्फ "स्वच्छ एक्सएएमएल" के बारे में भूल सकता हूं और विजुअल स्टूडियो 2008 में जीयूआई डिजाइनर का उपयोग कर सकता हूं (जो सिर्फ एक विशाल ग्रिड के अंदर सबकुछ बिल्कुल सही स्थिति में है), लेकिन मुझे डर है कि मैं कई फायदे खो दूंगा एक्सएएमएल ऐसा करके ऑफर करता है।

क्या आपने कुछ ऐसा अनुभव किया है? यदि हां, रोजमर्रा के डब्ल्यूपीएफ विकास को गति देने के लिए आपने क्या किया?

+0

"क्या आपने कुछ ऐसा अनुभव किया है?" हाँ बिलकुल। मेरी इच्छा है कि डब्ल्यूपीएफ में सरल "विंडोज़/फॉर्म" बनाने का एक तरीका था जो WinForms की तरह दिखता है। – AMissico

उत्तर

5

मैं हर रोज WPF विकास में तेजी लाने के लिए मुझे क्या करना:

  1. पर ध्यान न दें देखने के लिए और के रूप में मैं कर सकते हैं लंबे समय के लिए लग रहा है। आदर्श रूप से, tweaking संरेखण और मार्जिन और परिभाषित शैलियों मैं आखिरी चीज है।

  2. स्टैकपैनेल का उपयोग करने से पहले ग्रिड का उपयोग करने से पहले डॉकपनेल का उपयोग करें और ग्रिड का उपयोग करें।

  3. ग्रिड का उपयोग करते समय, स्टार-आकार सबकुछ। मैं वापस आऊंगा और इसे बाद में ठीक कर दूंगा, लेकिन प्रोटोटाइप के दौरान, ग्रिड वास्तव में कितनी पंक्तियों और स्तंभों के बारे में स्पष्ट विचार है, यह बहुत उपयोगी है।

  4. कक्समल में प्रोटोटाइप, अभिव्यक्ति मिश्रण में समाप्त, विजुअल स्टूडियो में परीक्षण। इसके लिए एक पद्धति को समझने में काफी समय लगा है, और यह अभी भी बहुत काम प्रगति पर है। लेकिन कक्समल यह देखने के लिए बहुत अच्छा है कि एक्सएएमएल प्रोटोटाइप कैसा व्यवहार करेगा, और दृश्यों को काम करने और उपयोगकर्ता नियंत्रण और शैलियों में चीजों को समाहित करने के लिए मिश्रण बहुत अच्छा है।

  5. मिश्रण का उपयोग करते समय, आर्टबोर्ड में लेआउट न बनाएं, उन्हें ऑब्जेक्ट रूपरेखा में बनाएं। जब मैं पहली बार एक डब्ल्यूपीएफ यूआई विकसित कर रहा हूं, तो ऑब्जेक्ट्स का पदानुक्रम स्क्रीन पर कैसा दिखता है उससे सौ गुना अधिक महत्वपूर्ण है। मैं अभी भी ऐसा करने के लिए सीख रहा हूं, और ऐसा लगता है कि एक बार जब मैं इसमें काफी अच्छा हो जाता हूं तो मुझे अब कक्समल में प्रोटोटाइप करने की आवश्यकता नहीं होगी।

  6. संभवतः सबसे छोटी चीज़ पर काम करें। इसके लिए बहुत सारे अनुशासन की आवश्यकता है। मेरे पास एक बड़ी बड़ी जटिल XAML फ़ाइल है, और मैं निर्णय लेता हूं कि मुझे नियंत्रण के टेम्पलेट को संपादित करने की आवश्यकता है पहली बात यह है कि उसमें उस नियंत्रण के साथ एक छोटी XAML फ़ाइल बनाएं और वहां नियंत्रण टेम्पलेट संपादित करें। इस की तरह काम करने का प्रलोभन में मजबूत है, क्योंकि नियंत्रण टेम्पलेट को संपादित करना केवल एक राइट-क्लिक है। ऐसा मत करो

  7. इस बारे में भी मत सोचें कि मुझे अपने छोटे से छोटे-एक एप्लिकेशन के लिए एक दृश्य मॉडल विकसित करना चाहिए या नहीं। हां मुझे करना चाहिये।

  8. मिश्रण जानें। वास्तव में, वास्तव में इसे सीखो। जानें कि चयनित ऑब्जेक्ट के आस-पास के सभी छोटे आइकन क्या हैं, और उन पर ध्यान दें। (यहां एक शॉर्टकट है: मैंने उस चीज़ पर मार्जिन सेट नहीं किया था, लेकिन मिश्रण ने किया था। इसका जवाब है कि "मेरा क्या कहना है कि अब क्या मिश्रण है?" प्रश्न।) ब्लेंड यूआई का उपयोग करें, भले ही मैं जानता हूं हाथ से XAML को संपादित करना तेज़ होगा। यह फिर से अनुशासन का विषय है, इसे अब करने के लिए प्रलोभन का विरोध करना ताकि मैं इसे और अधिक करने के लिए अपनी क्षमता में सुधार कर सकूं।

0

यदि आप वीएस -2010 का उपयोग करते हैं तो मुझे लगता है कि एक्सएएमएल के लिए दृश्य डिजाइनर अब बेहतर है और मुझे लगता है कि क्लासिक विनफॉर्म विकास के साथ विकास के समय को और अधिक समय लाता है।

यदि आपको अभी भी .NET 3.5 को लक्षित करने की आवश्यकता है तो आप 4.0 के बजाय 3.5 तक संकलित करने के लिए समाधान सेट कर सकते हैं। यदि आप अभी तक वीएस -2010 का उपयोग नहीं कर रहे हैं तो यह आपके लिए एक अच्छा विकल्प हो सकता है।

3

यह कहने की तरह है कि "कटा हुआ सेब बनाना आसान है, लेकिन सेब पाई बेहतर स्वाद लेता है। मैं सेब पाई को आसानी से कैसे बना सकता हूं क्योंकि मैं सेब का टुकड़ा कर सकता हूं?" खैर, आप पूर्व-निर्मित पाई क्रस्ट का उपयोग करके या पूर्व-कटा हुआ सेब खरीदकर इसे आसान बना सकते हैं, लेकिन यह कभी भी आसान नहीं होगा, क्योंकि इसका सामना करना पड़ता है, आप ऐसा कुछ कर रहे हैं जो बहुत अधिक जटिल और संभावित रूप से स्वादिष्ट है।

ऐसा लगता है कि स्टाइल आपको बनाए रखता है। यदि आपने अभी तक प्रत्येक प्रोजेक्ट के साथ एक ही शैलियों को आयात किया है तो आप बहुत तेज शुरुआत कर सकते हैं। आम तौर पर जब मैं अपनी सभी शैलियों को बना देता हूं तो मैं ठीक से उड़ता हूं।

अन्यथा, ड्रैग-एंड-ड्रॉप WinForms डिजाइनर के रूप में इसे आसान बनाने का एकमात्र तरीका ड्रैग-एंड-ड्रॉप WPF डिज़ाइनर का उपयोग करना है।

0

मुझे तुम्हारा दर्द महसूस होता है ... हर बार जब हम डेटाबेस में एक नया क्षेत्र जोड़ते हैं, तो एक अन्य टेक्स्टबॉक्स/कॉम्बोबॉक्स को फॉर्म पर बनाया जाना चाहिए। मैंने पाया है कि अभिव्यक्ति मिश्रण का उपयोग करके मुझे फॉर्म डालने में बहुत तेज़ होने की अनुमति मिलती है। नकारात्मकता यह है कि ब्लेंड का उपयोग हाथ से लिखने से अधिक xaml बनाने के लिए होता है, इसलिए मैं आमतौर पर xaml को थोड़ा सा साफ कर देता हूं।

अंत में, ब्लेंड विजुअल स्टूडियो (2010 शामिल) की तुलना में एक बेहतर डिजाइनर है, इसलिए ब्लेंड में अपना डिज़ाइन काम करना और वीएस में विकास कार्य करना बहुत तेज़ है। (बस मेरे दो सेंट)

+1

मुझे लगता है कि यह सवाल पूछता है: क्या एक्सएएमएल रिफैक्टरिंग/क्लीनअप को स्वचालित/व्यवस्थित करने में मदद करने के लिए कोई उपकरण हैं? –

1

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

2

मैं अब कुछ वर्षों से WPF का उपयोग कर रहा हूं - इष्टतम गति के लिए, मैं डिज़ाइन-व्यू को अक्षम करता हूं, स्निपेट्स का उपयोग करता हूं, इंटेलिजेंस तीव्रता से (और निश्चित रूप से रीशेर्पर) का उपयोग करता हूं।

और फिर मैं चीजों को सरल बना देता हूं - मैं लगभग हर चीज के लिए मानक लेआउट का उपयोग करने के लिए उतर गया हूं - यानी। मुख्य स्क्रीन बिट -> डॉकपैनल, टूलबार डॉक टॉप -> स्निपेट।

पॉपअप स्क्रीन -> डॉकपैनल, टूलबार डॉक टॉप, कस्टम पर्सिस्टेंट सेक्शन नीचे डॉक किया गया (सहेजें और रद्द करें बटन) - व्यूमोडेल के गुण -> उपयोगकर्ता ग्रिड, लेबल और गुणों के साथ नियंत्रण।

स्टाइल के लिए - पहले क्या है कि मैं प्रत्येक प्रकार के लिए कम से कम 3 स्क्रीन जब - प्रत्येक प्रकार के लिए संसाधन शब्दकोशों पैदा करते हैं। सामान्य स्टाइलिंग को परिभाषित करें - हैडर टेक्स्टब्लॉक इत्यादि। प्रत्येक स्क्रीन में संसाधन संसाधन आयात करें और शैलियों को लागू करें।

गैर बंद शैलियों के साथ App.xaml में रंग, मार्जिन, गद्दी आदि को लागू करें।

मैं एक तेज़ तरीके से नहीं सोच सकता। कम से कम मेरे लिए, मुझे वास्तव में ऐसा करने के दौरान सोचने की ज़रूरत नहीं है (इसलिए, मैं जटिल सामग्री के लिए बाद में अपने दिमागी शक्ति का उपयोग कर सकता हूं) - और यह एक सतत "LOB-look" प्रदान करता है जो शैली के लिए अपेक्षाकृत आसान है, थीम और बाद में बदलें। यह मूल रूप से टाइपिंग का मामला है।

1

वीएस -2010 के बारे में सलाह बहुत अच्छी है; वीएस -2008 के एक्सएएमएल डिजाइनर की तुलना में इसका दृश्य डिजाइनर वास्तव में उपयोगी है, जो बेकार से कम था।

माइक्रोसॉफ्ट की पीआर मशीन लाइन-ऑफ-बिजनेस ऐप के लिए बड़े पैमाने पर "मॉडल-व्यू-व्यू मॉडेल" पैटर्न को धक्का देती है, जहां वे वास्तव में उन चीज़ों की अनुशंसा करते हैं जो आपके समय को बर्बाद कर सकते हैं।

एक्सएएमएल में जूता-सींग सब कुछ करने का प्रयास करने में घंटों खर्च करें, जब तक आपकी कंपनी या ग्राहक की प्रक्रियाओं की आवश्यकता न हो। यदि आप इसे वीबी या सी # में तेज़ी से कोड कर सकते हैं, और कोड अभी भी रखरखाव योग्य, टेस्टेबल और पठनीय है, तो इसे करें।

नहीं एक MVVM शुद्धतावादी बन करो; यहां तक ​​कि माइक्रोसॉफ्ट ने इस पैटर्न के लिए उचित संतुलन भी नहीं निकाला है, और यहां तक ​​कि सिल्वरलाइट 4 सामान के साथ, वे विकास उपकरण के अच्छे सेट या पैटर्न के लिए सर्वोत्तम प्रथाओं के साथ नहीं आए हैं, भले ही यह लगभग पांच साल बाद हो यह पहले प्रस्तावित किया गया था; आईसीओएमएंड और इनोटिफ़ाईप्रॉपर्टी को छोड़ने के लिए अभी भी बहुत ही वैध कारण हैं, कोड-बैक से अपने व्यू मॉडेल पर एक विधि को कॉल करने के पक्ष में बदलें। इसके अलावा, पिछले कुछ महीनों में मैंने जो गैर-माइक्रोसॉफ्ट डब्ल्यूपीएफ/सिल्वरलाइट विशेषज्ञ की बात सुनी है, वह कहने में नाकाम रही है, "मैं अभी तक एमवीवीएम के बारे में निश्चित नहीं हूं, मैं एक शुद्धवादी नहीं हूं।"

एक संतुलन का पता लगाएं और क्या आप के लिए काम करता है के लिए XAML का उपयोग, और क्या आप के लिए काम करता है के लिए C# या VB। उनके ब्लॉग पर एमएस देव XAML "मार्कअप" को कॉल करने के शौकीन हैं, और सी # या वीबी "कोड, दुर्भाग्य से" है। खैर, अगर आप इसे टाइप कर रहे हैं या इसे बिछा रहे हैं, तो यह सब कोड है, और सच्चाई यह है कि एक्सएएमएल को जो भी समझा जाता है और फिर उन फ़ाइलों में सी # या वीबी में बदल जाता है जिन्हें आप संकलित नहीं कर सकते हैं, इसे संकलित करने से पहले । (उदाहरण के लिए, Application.g.vb को आंशिक वर्ग के रूप में Application.xaml से उत्पन्न किया गया है।)

एक्सएएमएल संरचनाएं जैसे एनिमेशन और स्टोरीबोर्ड हैं जो एक्सएएमएल में कई लाइनें लेते हैं, लेकिन प्रक्रियात्मक भाषाओं में केवल कोड की एक या दो पंक्तियां लें और वास्तव में पढ़ने में आसान हो, खासकर अगर एनीमेशन केवल कुछ शर्तों के तहत किसी ईवेंट को प्रतिसाद देता है। क्या सबसे अच्छा काम करता है।

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

संक्षेप में, आराम करने के लिए और अपने खुद के सर्वोत्तम प्रथाओं को कोड, VS2010 उपकरण का उपयोग कर, और तुम गति लेने के लिए सक्षम होना चाहिए।