2009-02-26 9 views
40

मैं डब्ल्यूपीएफ देख रहा हूं, लेकिन मैंने वास्तव में इसमें कभी काम नहीं किया है (15 मिनट के अलावा, जो इस सवाल को प्रेरित करता है)। मैंने इस post पर देखा लेकिन वास्तव में एक डब्ल्यूपीएफ के "फ्लैश" के बारे में। तो विंडोज़ फॉर्म एप्लिकेशन और डब्ल्यूपीएफ एप्लीकेशन के बीच क्या अंतर है?डब्ल्यूपीएफ क्या है और यह WinForms से तुलना कैसे करता है?

+5

मुझे यह मेरे लिए उपयोगी पाया [clear-code.blogspot.com/2012/04/what-is-wpf।एचटीएमएल] (http://clear-code.blogspot.com/2012/04/what-is-wpf.html) –

उत्तर

54

डब्ल्यूपीएफ एक वेक्टर ग्राफिक्स आधारित यूआई प्रस्तुति परत है जहां WinForms नहीं है। यह महत्वपूर्ण/दिलचस्प क्यों है? वेक्टर आधारित होने के कारण, यह प्रस्तुति परत को बिना किसी विकृति के किसी भी आकार में यूआई तत्वों को आसानी से स्केल करने की अनुमति देता है।

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

डब्ल्यूपीएफ भी पूरी तरह से डाटाबेसिंग को जागरूक कर रहा है, जिसका मतलब है कि आप एक यूआई तत्व की किसी भी संपत्ति को किसी .NET ऑब्जेक्ट (या किसी ऑब्जेक्ट की प्रॉपर्टी/विधि), किसी अन्य UI तत्व या डेटा की संपत्ति से जोड़ सकते हैं। हां, WinForms डाटाबेसिंग का समर्थन करता है लेकिन एक बहुत सीमित तरीके से।

अंत में, डब्ल्यूपीएफ "त्वचा योग्य" या "थीमबल" है, जिसका अर्थ है कि एक डेवलपर के रूप में आप एक सूची बॉक्स का उपयोग कर सकते हैं क्योंकि वे आपके लिए आवश्यक व्यवहार हैं, लेकिन कोई इसे पूरी तरह से अलग दिखने के लिए "त्वचा" कर सकता है।

छवियों की सूची बॉक्स के बारे में सोचें। आप चाहते हैं कि सामग्री वास्तव में छवि हो लेकिन आप अभी भी सूची बॉक्स व्यवहार चाहते हैं। यह केवल एक सूची बॉक्स का उपयोग करके और सामग्री प्रस्तुति को पाठ के बजाय छवि रखने के लिए WPF में करने के लिए पूरी तरह से तुच्छ है।

+0

मुझे पूरा यकीन है कि WinForm में आप किसी भी संपत्ति को किसी भी चीज़ से बांध सकते हैं। यही कारण है कि DataBindings.Add() स्ट्रिंग, ऑब्जेक्ट, स्ट्रिंग लेता है। तो यह गुणों को एक साथ बांधने के लिए प्रतिबिंब का उपयोग कर सकते हैं। – Quibblesome

+0

सिल्वरलाइट डब्ल्यूपीएफ की एक्सएएमएल क्षमताओं का एक सबसेट का उपयोग करता है, इसलिए डब्ल्यूपीएफ आधारित अनुप्रयोगों को प्रोग्राम करने का तरीका जानना सिल्वरलाइट एप्लेट को इतना आसान बना देता है। –

+0

तो क्या उपयोगकर्ता एक डब्ल्यूपीएफ और विनफॉर्म के बीच अंतर बता सकता है? – Kredns

9

अपने प्रश्न का उत्तर देने के लिए, एक WPF अनुप्रयोग एक विंडोज़ एप्लिकेशन है। समृद्ध विंडोज अनुप्रयोगों को लिखने के लिए डब्ल्यूपीएफ माइक्रोसॉफ्ट का नया ढांचा है (वास्तव में, यह .NET Framework 3.0 का उपप्रणाली है)। यह WinForms के लिए एक अंतिम प्रतिस्थापन के रूप में है (हालांकि स्वीकार्य रूप से गोद लेने की दर एमएस की अपेक्षा धीमी है)।

17

यह देखने का एक अच्छा तरीका यह पूछने से शुरू हो सकता है कि वास्तव में Winforms क्या है।

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

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

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

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

+1

मैंने पाया कि जब मैं डब्ल्यूपीएफ में शुरू कर रहा था तो WinForms के तरीके को करने की कोशिश कर रहा था, जिससे मुझे कई समस्याएं हुईं। डब्ल्यूपीएफ, आईएमओ के साथ काम करना शुरू करते समय संभवतः एक स्लेट को साफ करने के साथ शुरू करना बेहतर है। – Andy

+0

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

3

प्रारंभ यहाँ, वहाँ दर्जनों और वीडियो के दर्जनों है: http://www.windowsclient.net/learn

इस मामले में, विपणन schpiel बहुत अच्छी है: .नेट फ्रेमवर्क में कक्षाओं का एक सेट है

** "Windows Forms कि उपयोगकर्ता इंटरफ़ेस नियंत्रण और ग्राफिक्स के लिए शक्तिशाली, एक्स्टेंसिबल लाइब्रेरी के साथ समृद्ध विंडोज क्लाइंट अनुप्रयोगों के तेज़ी से विकास को सक्षम बनाता है। आप अपने विंडोज़ फॉर्म अनुप्रयोगों में डब्ल्यूपीएफ-विंडोज फॉर्म इंटरऑपरेबिलिटी के माध्यम से .NET 3.5 फ्रेमवर्क में WPF को शामिल कर सकते हैं। "*

* "डब्ल्यूपीएफ, माइक्रोसॉफ्ट .NET Framewor का एक घटक के 3.5, आपको विंडोज उपयोगकर्ता अनुभवों की अगली पीढ़ी बनाने की शक्ति प्रदान करता है। डब्ल्यूपीएफ यूआई, मीडिया, दस्तावेज, हार्डवेयर त्वरण, वेक्टर ग्राफिक्स, विभिन्न रूप कारकों, इंटरैक्टिव डेटा विज़ुअलाइज़ेशन और बेहतर सामग्री पठनीयता के लिए स्केलेबिलिटी का समर्थन करता है। "**

डब्ल्यूपीएफ के साथ आपको बेहतर ग्राफिक्स समर्थन मिलता है, रास्ता अधिक शक्तिशाली और लचीला डेटा बाइंडिंग (यदि आप डेटा के साथ काम कर रहे हैं, WPF का उपयोग करें।)

3

WPF डब्ल्यू indows पी resentation एफ oundation के लिए खड़ा है। जबकि WinForms प्रौद्योगिकी पर GDI/GDI + निर्भर करता है, WPF के शीर्ष पर सीधे बनाया गया है डायरेक्टएक्स। इसका मतलब है कि आप अभी भी .NET Framework क्लास लाइब्रेरी का उपयोग करते हुए WinForms के साथ कर सकते हैं। आप समृद्ध उपयोगकर्ता बना सकते हैं टेर्फ, 2 डी/3 डी गेम, प्रस्तुतिकरण और बहुत कुछ। डब्ल्यूपीएफ तत्व "मूवी" के बिना फ्लैश (एसएफएफ) फिल्म की तरह है। डब्ल्यूपीएफ .NET पर आधारित है और समृद्ध क्लाइंट साइड वेब सक्षम अनुप्रयोगों के निर्माण के लिए इसका उपयोग किया जा सकता है।

1
  1. डब्ल्यूपीएफ अनिवार्य रूप से विंडोज प्लेटफार्म के लिए ग्राफिकल यूजर इंटरफेस बनाने के लिए एक नई एपीआई है।
  2. डब्ल्यूपीएफ दृश्यमान आश्चर्यजनक उपयोगकर्ता इंटरफेस के साथ विंडोज क्लाइंट एप्लिकेशन बनाने के लिए सिर्फ अगली पीढ़ी की प्रस्तुति प्रणाली से अधिक है।
  3. डब्ल्यूपीएफ पुराने जीडीआई/जीडीआई + उपप्रणाली पर निर्भर होने के बजाय डायरेक्टएक्स (डायरेक्ट 3 डी) के शीर्ष पर बनाता है।
  4. डब्ल्यूपीएफ एक वेक्टर ग्राफिक्स आधारित यूआई प्रस्तुति परत है और वेक्टर आधारित होने पर यह प्रस्तुति परत को बिना किसी विकृति के किसी भी आकार में यूआई तत्वों को आसानी से स्केल करने की अनुमति देता है।
  5. डब्ल्यूपीएफ "त्वचा-सक्षम" और "थीम-सक्षम" है। इसका मतलब है कि डब्ल्यूपीएफ किसी यूआई नियंत्रण के स्वरूप और अनुभव को बदलने की अनुमति देता है।
0

एक कार्यान्वयन दृष्टिकोण से, मुख्य अंतर यह है कि WPF, XAML, viewmodel एक जा रहा है दृश्य एक कस्टम मार्कअप भाषा में परिभाषित किया जा रहा के साथ एक सख्ती से लागू मॉडल-दृश्य-viewmodel एमवी-वी एम वास्तुकला का उपयोग करता है, है सुलभ गुणों वाला वर्ग, और मॉडल प्रभावी रूप से डेटा एक्सेस परत होने वाला है। तुलनात्मक रूप से WinForms, इस तरह के स्पष्ट अलगाव नहीं है - हालांकि सम्मेलन के अनुसार विभिन्न पहलुओं को विभिन्न सी # फाइलों में समूहीकृत किया जा सकता है, यह सब अभी भी कोड है। अभ्यास में यह डब्ल्यूपीएफ विकास को वेब डीओएम विकास की तरह बनाता है, जिसमें पृष्ठभूमि और मध्यस्थता में चल रहे डब्ल्यूपीएफ ढांचे के साथ।

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