2010-05-16 12 views
6

मैं यहाँ WPF की खूबियों के बारे में सवाल का एक बहुत देखा है, और अनिवार्य रूप से हर जवाब यह मधुमक्खी के घुटनों है कहते हैं, लेकिन अनिवार्य रूप से हर जवाब भी XAML जैसी चीजों के बारे में बात करती है कई मामलों ग्राफिक डिजाइनर और अभिव्यक्ति में मिश्रण आदि। मेरा सवाल यह है कि क्या आप डब्ल्यूपीएफ में शामिल होने के लायक हैं यदि आप अकेले सीडी में काम कर रहे एकल कोडर हैं?WPF केवल

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

Winforms उन स्थितियों में ठीक काम करता है। क्या डब्ल्यूपीएफ का भी सच है, या यह पता चला है कि महत्वपूर्ण कार्यों को केवल एक्सएएमएल में ही किया जा सकता है, डिफ़ॉल्ट सेटिंग्स वास्तविक उपयोग के लिए नहीं हैं और आपको चीजों को अच्छे लगने के लिए टीम पर ग्राफिक डिजाइनर होना चाहिए। , और मेरी स्थिति में कोई भी Winforms से चिपकने के लिए बेहतर होगा?

+1

क्या मुझे गलत लगता है, या क्या आपको वास्तव में उचित औजारों का उपयोग करने से इनकार करने पर गर्व है? – ima

+0

मुझे नहीं लगता कि _proud_ या _proper_ सही शब्द हैं। मुझे लगता है कि यह वरीयता का मामला है। मुझे ड्रैग-एंड-ड्रॉप टूल हमेशा मुझे सिरदर्द देते हैं, इसलिए मैं उनका उपयोग करने में कमी करता हूं। यदि मुझे लगता है कि मैं एक्सएमएल को हाथ से संपादित कर दूंगा, हालांकि मैं उचित रूप से संभवतः सी # में काम करना पसंद करता हूं।मैं सोच रहा हूं कि डब्ल्यूपीएफ इन प्राथमिकताओं को कितनी अच्छी तरह समायोजित करता है। – rwallace

+1

डब्ल्यूपीएफ आपकी वरीयताओं को समायोजित करेगा, लेकिन आपको चीजों को करने के डब्ल्यूपीएफ तरीके सीखने के लिए बहुत दृढ़ता से प्रोत्साहित किया जाएगा। अच्छी पूर्वावलोकन कार्यक्षमता वाले एक सभ्य WPF डिज़ाइनर को "संशोधित -> पूर्वावलोकन -> संशोधित करें" चक्र को काफी कम कर सकता है। यदि यूआई के साथ "टिंकरिंग" कम दर्दनाक है तो आप उस पर समय बिताने का आनंद ले सकते हैं और संभवतः अच्छे डिजाइन के साथ बाहर आ सकते हैं। – R0MANARMY

उत्तर

4

संक्षिप्त उत्तर: हाँ, आप केवल कोड के साथ WPF कर सकते हैं।

लंबा उत्तर: यूआई पर काम करने में सक्षम होने वाले डिजाइनर के बारे में हिस्सा और कार्यक्षमता पर डेवलपर वास्तव में प्रेजेंटेशन से डीकॉप्लिंग कार्यक्षमता का दुष्प्रभाव है।

क्या WPF एक शक्तिशाली तरीके से तालिका में लाता है डेटा-बाइंडिंग जो आपको डिज़ाइन पैटर्न की विस्तृत श्रृंखला का उपयोग करने में सक्षम बनाता है। MVVM पर चर्चा की गई है recently

  • विभिन्न MVVM framework विन्यास आप एक ही लक्ष्यों को पूरा करने के लिए कम कोड लिखने के लिए अनुमति से अधिक सम्मेलन प्रोत्साहित करते हैं।
  • यह डिकूप्लिंग आपके एप्लिकेशन को अधिक टेस्ट करने योग्य बनाने का भी अच्छा दुष्प्रभाव है (यदि आप नहीं चाहते हैं तो आपको परीक्षण लिखना नहीं है, लेकिन कम से कम विकल्प वहां है)।

WinForms से WPF पर जाने से अधिकतर नए विकास के लिए आपके लिए यह संभव होगा। सिद्धांत में आप WinForms (केवल नए पुस्तकालयों के साथ) के साथ कर रहे हैं, लेकिन यह आपको अपने विकास में नए उपकरण को शामिल करने का विकल्प देता है क्योंकि आप प्रौद्योगिकी के साथ अधिक सहज हो जाते हैं।

यदि आपने इसे पहले से नहीं देखा है, तो स्कॉट हंसेलमैन द्वारा BabySmash series बहुत दिलचस्प है।

3

IMHO, यह तो केवल यह सुनिश्चित करना है कि आप इन कौशल का निर्माण WPF मार्ग से जा रहा लायक है। मैंने सिल्वरलाइट के साथ खिलवाड़ किया है जो एक्सएएमएल आधारित है और मैं उस ज्ञान को अधिकतर WPF में स्थानांतरित कर सकता हूं, भले ही एसएल एक सबसेट है।

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

+0

जैसा कि आप कहते हैं, आकर्षक इंटरफेस डिजाइन करने में कौशल रखने में निश्चित रूप से मूल्य है। दूसरी तरफ, अगर किसी के पास एक्सएमएल की बजाय सी # में इंटरफेस कहा जाता है, तो क्या डब्ल्यूपीएफ को समायोजित करता है? – rwallace

+0

@ रेलवे, यह आकर्षक इंटरफेस डिजाइन करने का कौशल नहीं है जिसे मैं प्रतिबिंबित कर रहा हूं, लेकिन डब्ल्यूपीएफ का ज्ञान और समझ, वह कौशल है जिसे मैं प्रतिबिंबित कर रहा हूं। आप निश्चित रूप से कोड में UI बना सकते हैं, आप आईडीई में डिज़ाइनर से चिपके रह सकते हैं या आप एक्सएएमएल कोड या उपर्युक्त सभी का मिश्रण भी दे सकते हैं। –

6

मैं एक कोड व्यक्ति अपने आप को, और ईमानदारी से, यह कोई बात नहीं कर रहा हूँ। भले ही आपको ग्राफिक डिज़ाइन के बारे में कुछ भी पता न हो, फिर भी आप यूआई डिज़ाइन करने के लिए विजुअल स्टूडियो में संपादक का उपयोग कर सकते हैं। डिज़ाइनर को ड्रैग & ड्रॉप डिज़ाइनर के रूप में ड्रैग डिज़ाइन करता है, जिससे वास्तव में समस्या उत्पन्न नहीं होती है। भले ही मैं एक कोड व्यक्ति हूं, मुझे xaml के साथ कोई समस्या नहीं है, जैसा कि, किसी भी तरह से, कोड फिर से है। मुझे पहली बार xaml के साथ भी समस्याएं थीं, लेकिन मुझे इसका इस्तेमाल हुआ, और विन फॉर्म में कोड में मुझे जो सामान करना पड़ा वह xaml में काफी आसान था।

डाटाबेसिंग केवल चट्टानों, आपको यूआई को डेटा प्राप्त करने की परवाह नहीं है, आपके पास बस ObservableCollection<T> या इसी तरह का है, और एक संपत्ति xaml कोड में है और सबकुछ आपके लिए किया जाता है। डेटा प्रारूपित करना चाहते हैं? बस बाध्यकारी में एक स्वरूपण संपत्ति जोड़ें। मूल्य के अनुसार पाठ रंगना चाहते हैं? लगभग 10 लाइनों के xaml कोड में कोड, बाध्यकारी और टेम्पलेट चयन के 15 लाइनों के साथ टेम्पलेट चयनकर्ता वर्ग। मैं वास्तव में इसे प्यार करने के लिए बढ़ रहा हूं, और समय के साथ (किसी अन्य नई तकनीक के साथ) आप इसका उपयोग करते हैं, और अच्छे दिखने वाले सामान का उत्पादन करते हैं।

1

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

+0

धन्यवाद, यह वादा करता है। मैं पूछूंगा, एक्सएएमएल आपको कोड की तुलना में चीजों को तेजी से कैसे उत्पन्न करता है? मैंने अन्य ढांचे में समान तकनीकों का प्रयास किया है, और उन्हें मेरी उत्पादकता को बढ़ावा देने के लिए नहीं मिला है, लेकिन शायद डब्ल्यूपीएफ अलग है? – rwallace

+0

एक्सएएमएल मार्कअप है, इसलिए आप सही "समय", घटना श्रृंखलाओं और सही क्रम में चीजें करने के बारे में चिंता किए बिना एक पूर्ण नक्षत्र का वर्णन करते हैं। यह आसान चीजों को आसान रखने में मदद करता है। कोर कंप्यूटेशंस इत्यादि हमेशा आपके कोड में रहेंगे, जैसा कि पहले था। –

3

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

मुझे लगता है कि निश्चित रूप से WPF सीखने लायक है, लेकिन अगर आप XAML सीखने के बिना यह करने के लिए चाहते हैं, तो मुझे लगता है कि आप शायद यह मिल जाएगा और अधिक कठिन grok।

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

यदि आपके पास WinForms का उपयोग बंद करने के लिए कोई अनिवार्य कारण नहीं है, तो नहीं। हालांकि, अगर आप सी # के बजाए एक्सएमएल में कोड लिखने के बारे में अपनी पूर्वकल्पनाओं को दूर कर सकते हैं, तो मुझे लगता है कि आप आश्चर्यचकित हो सकते हैं कि यूआई बनाने के लिए यह अलग दृष्टिकोण आपके कोड को साफ कर सकता है।

0

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