2009-04-27 15 views
10

WinForms प्रोग्रामर को WPF क्या है?WinForms प्रोग्रामर के लिए WPF क्या है?

डिस्टिल्ड WinForms फ़ॉर्म में नियंत्रण जोड़ रहा है, और ईवेंट हैंडलर जोड़ रहा है। यह सरल और आसान है और आपको जल्दी से कार्यात्मक जीयूआई बनाने की अनुमति देता है।

दूसरी ओर डब्ल्यूपीएफ एक्सएएमएल (?) + कोड (?) है जो धीरे-धीरे सुंदर यूआई बनाने के लिए एक और अधिक जटिल तरीका लगता है।

डब्ल्यूपीएफ के पहलुओं पर बहुत से मौजूदा SO प्रश्न हैं लेकिन मैं इसे दोहराए जाने के तरीके पर दो वाक्य ब्लब की तलाश में हूं। क्या मुझे सिर्फ एक्सएएमएल सीखने पर ध्यान देना चाहिए? या वास्तविक डब्ल्यूपीएफ सीधे कक्षाओं और कोड लिखने (Winforms की तरह) द्वारा लिखित द्वारा लिखा है?

इसके अलावा, मेरे जैसे WinForms प्रोग्रामर का क्या व्यावहारिक लाभ होगा WPF का उपयोग करने से? 3 डी ग्राफिक्स, पाठ के मनमाने ढंग से ज़ूमिंग, और अनुप्रयोगों के लिए कस्टम 'खाल' मान्य जवाब नहीं हैं। डब्ल्यूपीएफ शिपिंग ऑर्डर ट्रैक करने के लिए इस्तेमाल किए गए ऐप की पेशकश करता है।

+3

ग्रॉक = ग्रोक + अजीक - महान नया शब्द – MrTelly

उत्तर

1

मैं इसे देख विचार करने के लिए HTML + सीएसएस वेबपेजों होगा करने का एक तरीका लगता है। हमारे पास HTML था और यह बहुत अच्छा था, सिवाय इसके कि चीजें सभी एक साथ झुकाए गए थे। लोगों को एहसास हुआ कि सीएसएस के साथ, आप संरचना को प्रस्तुति से दस्तावेज़ के अलग कर सकते हैं। एक्सएएमएल एक ही चीज करता है, या कम से कम इसे अनुमति देता है और प्रोत्साहित करता है।

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

0

एक WPF अनुप्रयोग का एक्सएएमएल भाग विनफॉर्म में WinForm.Designer.cs फ़ाइल का एक प्रतिस्थापन है।

डब्ल्यूपीएफ मॉडल में UI और व्यक्तिगत नियंत्रणों के लिए बेहतर डिज़ाइन है, जो WinForms के बहुत से कम-कमिंग को ठीक करता है और आपको (उम्मीद है) कंसर्न डिज़ाइन का एक बेहतर पृथक्करण करने के लिए मार्गदर्शन करता है।

0

डब्ल्यूपीएफ प्रत्येक विनफॉर्म प्रोग्रामर का सपना होना चाहिए: प्रक्रियात्मक रूप से हर छोटी चीज करने की बजाय, यह आपको यह कहने देता है कि नियंत्रण क्या है, उन्हें कहां रखना है, वे क्या दिखते हैं, और कुछ हद तक वे एक्सएएमएल में कैसे व्यवहार करते हैं, जबकि आप "पीछे कोड" में व्यवहार को अनुकूलित करते हैं। ओह, और एक्सएएमएल की घोषणात्मक प्रकृति की वजह से डिजाइनर पहले से कहीं ज्यादा आपके लिए बहुत कुछ कर सकता है। प्रस्तुति या यूआई (XAML) की नज़र कोड से अलग किया गया (.cs एट सब।) ऐसी है कि XAML स्वतंत्र रूप से बनाया जा सकता है:

+2

यह "प्रत्येक" WinForms प्रोग्रामर सपने देखना चाहिए, लेकिन मुझे WinForms डिजाइनर से प्यार है। डब्ल्यूपीएफ डिजाइनर SUCKS - और मुझे बताया गया है कि इसका उपयोग न करें, और केवल एक्सएएमएल में कोड ... श्वास! – series0ne

11

WPF

  • घोषणात्मक यूआई प्रोग्रामिंग लाता है जो लोग उस तरह की चीज़ पर अच्छे हैं - ग्राफिक डिजाइनर। फिर वे उन डेवलपर्स को अपना पूरा रूप प्रस्तुत करते हैं जो इसे काम करने के लिए कोड लिखते हैं। (सरल सामान को सीधे एक्सएएमएल में संभाला जा सकता है) आपको अधिक समांतरता और अच्छा यूएक्स (डेवलपर-स्वीकृत-यूआई के विपरीत)
  • डेटा बाध्यकारी: फिर एक घोषणात्मक झुकाव ..आप घोषणा करते हैं कि यह यूआई कंट्रोल किस मॉडल प्रॉपर्टी को प्रस्तुत करता है, डब्ल्यूपीएफ डेटा को & में डेटा को खींचने की देखभाल करता है, जिसमें बदलाव अधिसूचनाओं के साथ संशोधित सामग्री को वापस अपडेट किया जाता है।
  • बेहतर समग्र नियंत्रण मॉडल - अब आप लगभग किसी भी चीज़ के भीतर कुछ भी एम्बेड कर सकते हैं, इसलिए अब कल्पना को कोई सीमा नहीं है।
  • डेटा टेम्पलेट्स, नियंत्रण टेम्पलेट इत्यादि .. - फिर से कोड से यूआई को अलग करना। ये एक्सएएमएल टेम्पलेट्स निर्दिष्ट करते हैं (एक बार) उपयोगकर्ता डेटा को डेटा संरचना या यूआई नियंत्रण कैसे दिखाना चाहिए।
  • एक्स में बेहतर: बेशक एमएस प्रतिपादन की तरह अन्य पहलुओं के एक झुंड में सुधार (कम अद्यतन कि जीडीआई), स्केलिंग (संकल्प स्वतंत्रता), पारदर्शिता, लेआउट (गैर-निरपेक्ष), पाठ प्रतिपादन, एनीमेशन & वीडियो समर्थन, एक बेहतर इवेंट मॉडल, आदि। सभी
  • शैलियाँ, ट्रिगर्स: एक-स्थान शैलियों (XAML फिर से) के साथ विश्व स्तर पर समान रूप से दिखने के लिए आसान है। ट्रिगर कोड के ब्लॉक होते हैं जो कुछ ईवेंट होने पर निष्पादित होते हैं उदा। 'इस नियंत्रण का पाठ बदल गया .. तो अब "संशोधित" को इंगित करने के लिए अपनी अग्रभूमि संपत्ति को नीले रंग में अपडेट करें। सरल सामान सीधे एक्सएएमएल में किया जा सकता है।
+1

अच्छी जानकारी है लेकिन आपको एक प्रिसीस की आवश्यकता है: डब्ल्यूपीएफ यूआई, ए ला एचटीएमएल के लिए मार्कअप है, जिसमें अधिकांश जीडीआई + के लिए सीधा समर्थन है और यूआई घटनाओं के लिए व्यापक स्पष्ट बाध्यकारी है। –

0

मैंने पाया XAML थोड़ा जटिल है, भी हो सकता है, शुरुआत में, लेकिन एक बार मैं इसे करने के लिए इस्तेमाल किया गया, मैं यह बहुत सरल होने के लिए (एक बार आप बुनियादी नियंत्रण जानते हैं) मिल गया। इसके बारे में सबसे अच्छी चीजों में से एक डाटाबेसिंग है।

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

1

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

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

+0

यदि आप कर सकते हैं, तो कृपया "विंडोज फॉर्म के लिए डब्ल्यूपीएफ" प्रोग्रामर के लिए किसी भी मौजूदा दस्तावेज़ या ट्यूटोरियल के संदर्भ या दो साइट पर जाएं। यह उपयोगी होगा। – zumalifeguard

+0

डब्ल्यूपीएफ और विनफॉर्म वास्तव में बहुत कम आम हैं, इसलिए किसी भी ट्यूटोरियल को करना चाहिए। Http://www.wpftutorial.net पर देखने के लिए एक अच्छी जगह है। –

0

यहां मैं कुछ डब्ल्यूपीएफ प्रश्नों के बारे में एक बहुत ही सरल बेवकूफ शब्दों में जवाब देने की कोशिश कर रहा हूं, जो शुरुआती/विनफॉर्म डेवलपर्स का सामना करते हैं और जब मैंने डब्ल्यूपीएफ के साथ शुरुआत की तो मुझे सामना करना पड़ा। इंटरनेट में कई लेख और ट्यूटोरियल हैं जो पर्याप्त ज्ञान देते हैं, लेकिन बहुत सरल प्रश्नों के उत्तर ढूंढना मुश्किल है। मैं इसे यहां संबोधित करने की कोशिश कर रहा हूं।

WPF क्या है?

विस्तार के रूप में विंडोज प्रेजेंटेशन फाउंडेशन चला जाता है; यह विंडोज अनुप्रयोगों के निर्माण के लिए एक "प्रस्तुति" प्रणाली है। यदि आप एक Winforms डेवलपर हैं तो WPF में आपको जो बड़ा अंतर मिलेगा वह यह है कि जिस तरह डिज़ाइनर दिखता है। Winforms के विपरीत डिजाइनर कोड सी # कोड नहीं है लेकिन एक्सएएमएल कोड है।

डब्ल्यूपीएफ क्यों?

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

एमवीवीएम क्या है?

एमवीवीएम एक पैटर्न है, जो अनुप्रयोगों के विकास के दौरान अनुकूलित किया जाता है। इसे "मॉडल व्यू व्यू मॉडल" के रूप में विस्तारित किया जाता है, मूल रूप से प्रोजेक्ट की संरचना करते समय हमारे पास एक मॉडल फ़ोल्डर होता है जिसके अंतर्गत सभी मॉडल फाइलें (.cs) रखी जाएंगी, दृश्य मॉडल फ़ोल्डर के तहत सभी व्यूमोडेल फाइलें (.cs) होगी दृश्य फ़ोल्डर के नीचे और सभी दृश्य फ़ाइलों (.xaml) रखा जाएगा। यदि एमवीवीएम का उपयोग किया जाता है तो उसके पीछे कोई कोड नहीं होगा .xaml.cs फ़ाइल में ऑटो निर्मित विधि को छोड़कर कोई कोड नहीं होगा।

मॉडल: मॉडल में व्यावसायिक तर्क भाग है जो दृश्य मॉडल का समर्थन करता है जो अंततः दृश्य में प्रस्तुत किया जाएगा।

व्यूमोडेल: प्रत्येक दृश्य में एक दृश्य मॉडल होगा। व्यूमोडेल INotifyPropertyChanged इंटरफ़ेस को कार्यान्वित करेगा, और इसमें सभी गुण होंगे जो संबंधित दृश्य से बंधे हैं। मॉडल को किसी भी व्यावसायिक तर्क से लोड नहीं किया गया है और जिम्मेदारी मॉडल के साथ है।

देखें: दृश्य xaml फ़ाइल के अलावा कुछ भी नहीं है जहां विंडो डिज़ाइन की गई है। एक्सएएमएल एक मार्कअप भाषा है। WinF में विपरीत WPF में प्रत्येक नियंत्रण एक निर्भरता संपत्ति के साथ बाध्य किया जाएगा या तो पूर्वनिर्धारित या उपयोगकर्ता परिभाषित किया जाएगा।

क्यों एमवीवीएम?

जब भी WPF में कोई एप्लिकेशन विकसित किया जा रहा है, तो एमवीवीएम इसके साथ काम करता है। एमवीवीएम का उपयोग करने के सबसे बड़े फायदों में से एक यह है कि यह एक यूआई स्वतंत्र इकाई परीक्षण के लिए संभव बनाता है, क्योंकि इकाई परीक्षण के दौरान कोई कोड पीछे नहीं है यूआई संबंधित वस्तुओं की आवश्यकता है और इसलिए 100% कोड कवरेज संभव है। इकाई परीक्षण में, 'कमांड' (wpf में कमांड के लिए देखो) उपयोगकर्ता द्वारा किसी विशेष उपयोगकेस का परीक्षण करने के लिए पारित किया जा सकता है।

क्या यह WPF के साथ काम करते समय एमवीवीएम के साथ जाने के लिए एक जनादेश या पूर्ण आवश्यक है?

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

क्या मेरे पास एक दृश्य दृश्य में एक दृश्य/एकाधिक दृश्यों के लिए एकाधिक दृश्य मॉडल हो सकते हैं?

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

व्यूमोडेल और मॉडल के बीच क्या अंतर है?

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

एमवीवीएम में, क्या मैं दृश्य मॉडल या मॉडल क्लास को देखने के लिए छोड़ सकता हूं?

फिर यह पहले से उल्लिखित आवश्यकता पर निर्भर करता है, यदि कोई भारी व्यावसायिक तर्क नहीं है तो आप मॉडल श्रेणी से बच सकते हैं और इसे व्यूमोडेल में रख सकते हैं, लेकिन क्लीनर दृष्टिकोण मॉडल श्रेणी का उपयोग करना होगा।

संबंधित मुद्दे