विंडोज प्रेजेंटेशन फाउंडेशन

विंडोज प्रेजेंटेशन फाउंडेशन (WPF) एक मुक्त और ओपन-स्रोत ग्राफिकल उपतंत्र (WinForms के समान) है जो मूल रूप से माइक्रोसॉफ्ट द्वारा विंडोज-आधारित एप्लिकेशन में प्रयोक्ता इंटरफ़ेस

को रेंडर करने के लिए विकसित किया गया है। WPF, जिसे पहले "एवलॉन" के नाम से जाना जाता था, को प्रारम्भ में 2006 में .NET फ्रेमवर्क 3.0 के भाग के रूप में जारी किया गया था। WPF डायरेक्ट X का उपयोग करता है और अनुप्रयोगों के निर्माण के लिए एक सुसंगत प्रोग्रामिंग प्रतिरूप प्रदान करने का प्रयास करता है। यप्रयोक्ता इंटरफ़ेसजठ को व्यावसायिक तर्क से अलग करता है, और समान XML-उन्मुख ऑब्जेक्ट प्रतिरूप जैसा दिखता है, जैसे कि XUL और स्केलेबल वेक्टर ग्राफिक्स (SVG) में कार्यान्वित।

संक्षिप्त विवरण
WPF विभिन्न अंतरापृष्ठ तत्वों को परिभाषित करने और लिंक करने के लिए एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज, (XAML) एक XML- आधारित भाषा का उपयोग करता है। WPF एप्लिकेशन को स्टैंडअलोन डेस्कटॉप प्रोग्राम के रूप में नियुक्त किया जा सकता है या किसी वेबसाइट में सन्निहित ऑब्जेक्ट के रूप में होस्ट किया जा सकता है। WPF का उद्देश्य कई सामान्य प्रयोक्ता इंटरफ़ेस तत्वों को एकीकृत करना है, जैसे कि 2D/3D रेंडरिंग, और अनुकूली डॉक्यूमेंट, टाइपोग्राफी, वेक्टर ग्राफिक्स, कार्यावधि एनिमेशन और प्री-रेंडर मीडिया। इन तत्वों को विभिन्न घटनाओं, उपयोगकर्ता पारस्परिक क्रिया और डेटा बाइंडिंग के आधार पर जोड़ा और हेरफेर किया जा सकता है। विंडोज विस्टा और विंडोज सर्वर 2008 के बाद से WPF कार्यावधि लाइब्रेरी माइक्रोसॉफ्ट विंडोज के सभी संस्करणों में समिलित है। विंडोज XP SP2/SP3 और विंडोज सर्वर 2003 के उपयोगकर्ता वैकल्पिक रूप से आवश्यक लाइब्रेरी स्थापित कर सकते हैं।

माइक्रोसॉफ्ट सिल्वरलाइट ने कार्यक्षमता प्रदान की जो एडोब फ्लैश के तुलनीय सन्निहित वेब नियंत्रण प्रदान करने के लिए ज्यादातर WPF का एक उपवर्ग है। सिल्वरलाइट 5 के बाद से सिल्वरलाइट में 3D कार्यावधि रेंडरिंग का समर्थन किया गया था।

4 दिसंबर, 2018 को माइक्रोसॉफ्ट कनेक्ट इवेंट में, माइक्रोसॉफ्ट ने GitHub पर WPF को ओपन सोर्स प्रोजेक्ट के रूप में जारी करने की घोषणा की। यह MIT लाइसेंस के अधीन जारी किया गया है। विंडोज़ प्रेजेंटेशन फ़ाउंडेशन .NET सॉफ़्टवेयर संरचना को लक्षित करने वाली परियोजनाओं के लिए उपलब्ध हो गया है, हालाँकि, यह सिस्टम क्रॉस-प्लेटफ़ॉर्म नहीं है और अभी भी केवल विंडोज़ पर ही उपलब्ध है।

Direct3D
विंडोज़ जैसे डेस्कटॉप सहित ग्राफ़िक्स को डायरेक्ट 3D का उपयोग करके प्रस्तुत किया जाता है। यह ग्राफ़िक्स डिवाइस अंतरापृष्ठ (GDI) के व्यापक समर्थन और समान नियंत्रण विषय की कीमत पर अधिक जटिल ग्राफ़िक्स और कस्टम विषय के प्रदर्शन की अनुमति देता है। यह विंडोज को ग्राफ़िक्स प्रोसेसिंग युनिट के लिए कुछ ग्राफिक्स कार्यों को खाली करने की अनुमति देता है। यह कंप्यूटर की सेंट्रल प्रोसेसिंग यूनिट पर काम का बोझ कम करता है। GPU को समांतर पिक्सेल संगणनाओं के लिए अनुकूलित किया गया है। यह बाजारों में कम अनुकूलता की कीमत पर स्क्रीन रिफ्रेश को गति देता है जहां GPU आवश्यक रूप से शक्तिशाली नहीं हैं, जैसे कि नेटबुक बाजार।

वेक्टर ग्राफिक्स पर WPF का जोर अधिकांश नियंत्रणों और तत्वों को गुणवत्ता या पिक्सेलकरण में हानि के बिना मान करने की अनुमति देता है, इस प्रकार पहुंच में वृद्धि होती है। सिल्वरलाइट के अपवाद के साथ, Direct3D एकीकरण सुव्यवस्थित 3D रेंडरिंग की अनुमति देता है। इसके अतिरिक्त, पारस्परिक 2D विषय सूची को मूल रूप से 3D सतहों पर आच्छादित किया जा सकता है।

डेटा बाइंडिंग

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

मीडिया सेवाएं

 * WPF वेक्टर और रास्टर इमेज, ऑडियो और वीडियो जैसे सामान्य मीडिया तत्वों के साथ प्रयोक्ता इंटरफ़ेस बनाने के लिए एक एकीकृत सिस्टम प्रदान करता है। WPF एक एनीमेशन सिस्टम और एक 2D/3D रेंडरिंग सिस्टम भी प्रदान करता है।
 * WPF ब्रश, पेन, ज्योमेट्री और ट्रांसफॉर्म के अंतर्निर्मित सेट के साथ 2D ग्राफिक्स के लिए मूल आकार प्रदान करता है।
 * WPF में 3D क्षमताएं डाइरेक्ट 3D द्वारा प्रदान किए गए पूर्ण-सुविधा सेट का एक उपवर्ग हैं। हालाँकि, WPF प्रयोक्ता इंटरफ़ेस, डॉक्यूमेंट और मीडिया जैसी अन्य सुविधाओं के साथ अत्यधिक एकीकरण प्रदान करता है। इससे 3D प्रयोक्ता इंटरफ़ेस, 3D डॉक्यूमेंट या 3D मीडिया होना संभव हो जाता है।
 * अधिकांश सामान्य इमेज प्रारूपों के लिए समर्थन है: BMP, JPEG, PNG, TIFF, विंडोज मीडिया फोटो, GIF और ICON।
 * WPF डिफ़ॉल्ट रूप से WMV, MPEG और कुछ ऑडियो वीडियो इंटरलीव फ़ाइलों के वीडियो प्रारूपों का समर्थन करता है, लेकिन चूंकि इसके नीचे विंडोज़ मीडिया प्लेयर चल रहा है, इसलिए WPF इसके लिए स्थापित सभी कोडेक का उपयोग कर सकता है।

टेम्पलेट्स
कंट्रोल टेम्पलेट्स डेटा टेम्प्लेट
 * WPF में आप किसी तत्व के रूप को सीधे उसके गुणों के माध्यम से, या अप्रत्यक्ष रूप से एक टेम्पलेट या शैली के साथ परिभाषित कर सकते हैं। अपने सरलतम रूप में एक शैली गुण सेटिंग्स का एक संयोजन है जिसे एक UI पर एकल विशेषता के साथ लागू किया जा सकता है। टेम्प्लेट आपके WPF एप्लिकेशन के कुछ भागों के लिए वैकल्पिक UI को परिभाषित करने के लिए एक तंत्र हैं। WPF (कंट्रोल टेम्पलेट्स, डेटा टेम्पलेट्स, अनुक्रम डेटा टेम्पलेट्स, और आईटम पैनल टेम्पलेट्स) में कई प्रकार के टेम्पलेट उपलब्ध हैं।
 * WPF में सभी UI नियंत्रणों को समझना एक नया रचना प्रतिरूप है। प्रत्येक नियंत्रण एक या अधिक 'विस्वल' से बना होता है। इन दृश्य उप-तत्वों को WPF द्वारा एक पदानुक्रमित विस्वल ट्री में बदल दिया जाता है और अंततः GPU द्वारा प्रस्तुत किया जाता है। चूंकि WPF नियंत्रण मानक विंडोज़ नियंत्रणों के लिए तैयार नहीं हैं, इसलिए नियंत्रण के सामान्य व्यवहार को प्रभावित किए बिना उनके UI को मौलिक रूप से बदला जा सकता है।
 * WPF में प्रत्येक नियंत्रण में एक डिफ़ॉल्ट 'टेम्प्लेट' होता है जो इसके विज़ुअल ट्री को परिभाषित करता है। डिफ़ॉल्ट टेम्पलेट नियंत्रण लेखक द्वारा बनाया गया है और अन्य विकासकर्ता और रूपकारो द्वारा बदला जा सकता है। स्थानापन्न UI को कंट्रोल टेम्पलेट्स में रखा गया है।
 * WPF में एक लचीला डेटा बाइंडिंग सिस्टम है। UI तत्वों को अंतर्निहित डेटा प्रतिरूप से डेटा के साथ और समकालिक किया जा सकता है। बाध्य डेटा के लिए सरल टेक्स्ट दिखाने के बजाय, WPF विज़ुअल ट्री को रेंडर करने से पहले एक डेटा टेम्प्लेट (.NET प्रकारों के लिए बदली जाने वाली UI) लागू कर सकता है।

एनिमेशन

 * WPF फ्रेम-आधारित दृष्टिकोण के विपरीत समय-आधारित एनिमेशन का समर्थन करता है। यह एनीमेशन की गति को सिस्टम के प्रदर्शन से अलग करता है।
 * WPF टाइमर के माध्यम से निम्न स्तर के एनीमेशन का समर्थन करता है और एनिमेशन कक्षाओं के माध्यम से एनिमेशन के उच्च स्तर के सार का समर्थन करता है।
 * किसी भी WPF तत्व गुण को तब तक एनिमेटेड किया जा सकता है जब तक कि यह एक निर्भरता गुण के रूप में पंजीकृत हो।
 * एनीमेशन कक्षाएं एनिमेटेड होने के लिए .NET प्रकार की गुण पर आधारित होती हैं। उदाहरण के लिए, किसी तत्व का रंग बदलना कलर एनिमेशन वर्ग के साथ किया जाता है और किसी तत्व की चौड़ाई को एनिमेट करना (जिसे डबल के रूप में टाइप किया जाता है) डबल एनिमेशन वर्ग के साथ किया जाता है।
 * एनिमेशन को स्टोरीबोर्ड में समूहीकृत किया जा सकता है।
 * स्टोरीबोर्ड एनिमेशन को प्रारम्भ करने, रोकने, और अन्यथा हेरफेर करने का प्राथमिक तरीका है।
 * एनीमेशन बाहरी घटनाओं से प्रेरित किया जा सकता है, जिसमें उपयोगकर्ता की कार्रवाई भी समिलित है।
 * प्रस्तुति टाइमर WPF द्वारा प्रारंभ और प्रबंधित किए जाते हैं।
 * एनिमेशन प्रभावों को प्रति-ऑब्जेक्ट के आधार पर परिभाषित किया जा सकता है, जिसे एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज (XAML) से सीधे एक्सेस किया जा सकता है।
 * एनिमेशन प्रभावों को प्रति-ऑब्जेक्ट के आधार पर परिभाषित किया जा सकता है, जिसे एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज (XAML) से सीधे एक्सेस किया जा सकता है।
 * एनिमेशन प्रभावों को प्रति-ऑब्जेक्ट के आधार पर परिभाषित किया जा सकता है, जिसे एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज (XAML) से सीधे एक्सेस किया जा सकता है।

इमेजिंग

 * WPF मूल रूप से विंडोज इमेजिंग घटक (WIC) कोड और API तक पहुंच सकता है जिससे विकासकर्ता अपने विशिष्ट इमेज फ़ाइल स्वरूपों के लिए इमेज कोडेक लिख सकते हैं।

इफेक्ट

 * WPF 3.0 बिटमैप इफेक्ट प्रदान करता है, जो एक विज़ुअल पर लागू होने वाले रास्टर इफेक्ट हैं। ये रास्टर इफेक्ट अप्रबंधित कोड में लिखे गए हैं और CPU पर किए जाने वाले विज़ुअल के रेंडरिंग को बाध्य करते हैं न कि JPU द्वारा त्वरित किए गए हार्डवेयर को। बिटमैप इफेक्ट को .NET 3.5 SP 1 में बहिष्कृत कर दिया गया था।
 * .NET फ्रेमवर्क 3.5 SP1 प्रभाव वर्ग जोड़ता है, जो एक पिक्सेल-शेडर 2.0 इफेक्ट है जिसे एक विस्वल पर लागू किया जा सकता है, जो सभी रेंडरिंग को GPU पर बने रहने की अनुमति देता है।
 * इफेक्ट वर्ग वितान्य है, जिससे एप्लिकेशन अपने स्वयं के शेडर इफेक्ट निर्दिष्ट कर सकते हैं।
 * इफेक्ट वर्ग, .NET 3.5 SP1 और 4.0 में, दो अंतनिर्मित इफेक्ट, ब्लर इफेक्ट और ड्रॉपशैडो इफेक्ट के साथ आता है। आउटर ग्लो बिटमैप इफेक्ट, एम्बॉस बिटमैप इफेक्ट और बेवेल बिटमैप इफेक्ट के लिए कोई प्रत्यक्ष प्रतिस्थापन नहीं है, जो पहले बहिष्कृत बिटमैप इफेक्ट वर्ग द्वारा प्रदान किया गया था। हालाँकि, इफेक्ट वर्ग के साथ समान परिणाम प्राप्त करने के अन्य तरीके हैं। उदाहरण के लिए, विकासकर्ता ड्रॉपशैडो इफेक्ट का उपयोग करके इसके शैडोडेप्थ को 0 पर सेट करके एक बाहरी ग्लो इफेक्ट प्राप्त कर सकते हैं।
 * हालांकि बिटमैप इफेक्ट वर्ग को .Net फ्रेमवर्क 3.5 SP1 में पदावनत के रूप में चिह्नित किया गया था, फिर भी इसके उपयोग की अनुमति थी और ये इफेक्ट अभी भी सही तरीके से प्रस्तुत होंगे। .Net फ्रेमवर्क 4.0 में बिटमैप इफेक्ट वर्ग को प्रभावी रूप से पदावनत किया गया था - बिटमैप इफेक्ट को संदर्भित करने वाला कोड अभी भी त्रुटियों के बिना बनाता है, लेकिन वास्तव में कोई इफेक्ट प्रदान नहीं किया जाता है।

डॉक्यूमेंट

 * WPF मूल रूप से पृष्ठांकित डॉक्यूमेंट का समर्थन करता है। यह  प्रदान करता है, जो निश्चित लेआउट डॉक्यूमेंटों को पढ़ने के लिए है। वर्ग   प्रति-पृष्ठ या स्क्रॉल करने योग्य जैसे अलग-अलग विस्वल मोड प्रदान करता है।
 * मूल रूप से XAML पेपर विशिष्टता डॉक्यूमेंट का समर्थन करता है।
 * खुले पैकेजिंग कन्वेंशन का उपयोग करके पृष्ठांकित डॉक्यूमेंटों को पढ़ने और लिखने का समर्थन करता है।
 * खुले पैकेजिंग कन्वेंशन का उपयोग करके पृष्ठांकित डॉक्यूमेंटों को पढ़ने और लिखने का समर्थन करता है।

टेक्स्ट

 * WPF में कई टेक्स्ट रेंडरिंग सुविधाएँ समिलित हैं जो ग्राफिक्स डिवाइस अंतरापृष्ठ में उपलब्ध नहीं थीं। यह पहला माइक्रोसॉफ्ट प्रोग्रामिंग अंतरापृष्ठ है जो ओपन टाइप, ट्रू टाइप, और ओपन टाइप CFF फोंट का समर्थन करने वाले सॉफ़्टवेयर विकासकर्ता को ओपन टाइप सुविधाओं का संक्षेप करता है।
 * ओपन टाइप प्रकार के टाइपोग्राफिक सुविधाओं के लिए समर्थन में समिलित हैं:
 * संयुक्ताक्षर (टाइपोग्राफी)
 * पुरानी शैली के अंक
 * स्वैश (टाइपोग्राफी) प्रकारांतर
 * अंश
 * सुपरस्क्रिप्ट और सबस्क्रिप्ट
 * छोटे अक्षर
 * रेखा-स्तरीय औचित्य (टाइपसेटिंग)
 * रूबी पात्र
 * फ़ॉन्ट प्रतिस्थापन
 * आधार रेखा (टाइपोग्राफी)
 * प्रासंगिक और शैलीगत विकल्प
 * कर्निंग
 * WPF यूनिकोड में टेक्स्ट को संभालता है, और वैश्विक सेटिंग्स, जैसे सिस्टम लोकेल को भी संभालता है। इसके अतिरिक्त, फ़ॉन्ट नाम से स्वतंत्र लेखन दिशा की अनुमति देने के लिए फ़ॉलबैक तंत्र प्रदान किए जाते हैं; एकल-भाषा फोंट के समूह का उपयोग करते हुए समग्र फोंट से अंतरराष्ट्रीय फोंट बनाना।फ़ॉन्ट लिंकिंग और फ़ॉन्ट फ़ॉलबैक जानकारी समग्र फ़ॉन्ट तकनीक का उपयोग करके एक वहनीय XML फ़ाइल में संग्रहीत की जाती है। XML फ़ाइल में .CompositeFont. एक्सटेंशन है।
 * WPF टेक्स्ट इंजन अंतनिर्मित वर्तनी जांच का भी समर्थन करता है। यह स्वचालित लाइन रिक्ति, उन्नत अंतर्राष्ट्रीय टेक्स्ट, भाषा-निर्देशित लाइन ब्रेकिंग, हाइफ़नेशन, और औचित्य, बिटमैप इफेक्ट, रूपांतरण, और टेक्स्ट इफेक्ट जैसे छाया, धुंधला, चमक, रोटेशन आदि जैसी सुविधाओं का भी समर्थन करता है। एनिमेटेड टेक्स्ट भी समर्थित है; यह एनिमेटेड ग्लिफ, साथ ही टेक्स्ट की स्थिति, आकार, रंग और अस्पष्टता में वास्तविक समय परिवर्तनों को संदर्भित करता है।
 * WPF टेक्स्ट रेंडरिंग ClearType तकनीक में प्रगति का लाभ उठाता है, जैसे सब-पिक्सेल पोजिशनिंग, नेचुरल एडवांस विड्थ, Y- डायरेक्शन एंटी-अलियासिंग, हार्डवेयर एक्सिलरेशन टेक्स्ट रेंडरिंग, साथ ही प्री-रेंडर किए गए टेक्स्ट की आक्रामक कैशिंग वीडियो मेमोरी। पुराने WPF 3.x अनुप्रयोगों में क्लीयरटाइप को बंद नहीं किया जा सकता है। GDI या GDI+ में क्लीयरटाइप के विपरीत, WPF क्लीयरटाइप क्षैतिज रूप से ग्लिफ़ को पिक्सेल में आशुचित्र नहीं करता है, जिससे कुछ उपयोगकर्ताओं द्वारा नापसंद किए गए भेद का नुकसान होता है। WPF 4.0 में टेक्स्ट रेंडरिंग इंजन को फिर से लिखा गया है, इस समस्या को ठीक किया गया है।
 * ग्लिफ़ को किस सीमा तक कैश किया जाता है, यह वीडियो कार्ड पर निर्भर करता है। डायरेक्टX 10 कार्ड वीडियो मेमोरी में फ़ॉन्ट ग्लिफ़ को कैश करने में सक्षम हैं, फिर पूरी तरह से हार्डवेयर की रचना (सही क्रम में कैरेक्टर ग्लिफ़्स को एकत्रित करना), अल्फा-ब्लेंडिंग (एंटी-अलियासिंग का अनुप्रयोग), और RGB ब्लेंडिंग (क्लियरटाइप की सब-पिक्सेल कलर गणना) करें। इसका मतलब यह है कि केवल मूल ग्लिफ को एक बार प्रति फॉन्ट वीडियो मेमोरी में संग्रहीत करने की आवश्यकता है (माइक्रोसॉफ्ट का अनुमान है कि इसके लिए प्रति फॉन्ट 2 Mb वीडियो मेमोरी की आवश्यकता होगी), और अन्य संचालन जैसे अन्य ग्राफिक्स के शीर्ष पर एंटी-अलियास टेक्स्ट का प्रदर्शन - वीडियो सहित - CPU की ओर से बिना किसी संगणना प्रयास के भी किया जा सकता है। डायरेक्टX 9 कार्ड केवल अल्फा-मिश्रित ग्लिफ को स्मृति में कैश करने में सक्षम हैं, इस प्रकार CPU को वीडियो कार्ड में पास करने से पहले ग्लिफ संरचना और अल्फा-सम्मिश्रण को संभालने की आवश्यकता होती है। इन आंशिक रूप से प्रदान किए गए ग्लिफ़ को कैशिंग करने के लिए बहुत अधिक मेमोरी की आवश्यकता होती है (माइक्रोसॉफ्ट 5 प्रति प्रक्रिया का अनुमान लगाता है)। कार्ड जो डायरेक्टX 9 का समर्थन नहीं करते हैं, उनके पास कोई हार्डवेयर-त्वरित टेक्स्ट रेंडरिंग क्षमता नहीं है।

इंटरऑपरेबिलिटी
कक्षाओं के उपयोग के माध्यम से संभव हैं।
 * विंडोज फॉर्म   और Windows

WinForms के उपयोग को सक्षम करने के लिए, विकासकर्ता इसे अपने WPF C# कोड से निष्पादित करता है: System.विंडोज.Forms.Integration.विंडोजFormsHost.EnableविंडोजFormsInterop ;

वैकल्पिक इनपुट

 * WPF डिजिटल इंक से संबंधित कार्यक्षमता का समर्थन करता है।
 * WPF 4.0 विंडोज 7 और इसके बाद के संस्करण पर मल्टी-टच इनपुट का समर्थन करता है।

अभिगम्यता

 * WPF विकासकर्ता को सुलभ इंटरफेस बनाने की अनुमति देने के लिए माइक्रोसॉफ्ट UI स्वचालन का समर्थन करता है।
 * यह API स्वचालित परीक्षण स्क्रिप्ट को UI के साथ इंटरैक्ट करने की भी अनुमति देता है।

XAML
वेब विकास के लिए मार्कअप भाषाओं की सफलता के बाद, WPF ने एक्स्टेंसिबल एप्लिकेशन टेक्स्ट के प्रस्तुतिकरण के लिए प्रयुक्त भाषा (एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज; ), जो XML पर आधारित है। XAML को एप्लिकेशन यूजर इंटरफेस विकसित करने के एक अधिक कुशल तरीके के रूप में प्रारुपण किया गया है।

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

जैसा कि वेब डेवलपमेंट में होता है, लेआउट और विशिष्ट थीम दोनों ही मार्कअप के अनुकूल होते हैं, लेकिन एक्सटेंसिबल एप्लिकेशन मार्कअप लैंग्वेज दोनों के लिए आवश्यक नहीं है। वास्तव में, WPF के सभी तत्वों को माइक्रोसॉफ्ट .NET भाषा C#, VB.NET) में कोडित किया जा सकता है। XAML कोड अंततः सभी .NET भाषाओं की तरह एक प्रबंधित असेंबली में संकलित किया जा सकता है।

आर्किटेक्चर


WPF का आर्किटेक्चर प्रबंधित कोड और देशी कोड घटकों दोनों को फैलाता है। हालांकि, उजागर सार्वजनिक API केवल प्रबंधित कोड के माध्यम से उपलब्ध है। जबकि WPF का अधिकांश भाग प्रबंधित कोड में है, WPF अनुप्रयोगों को प्रस्तुत करने वाला रचना इंजन एक मूल घटक है। इसे मीडिया इंटीग्रेशन लेयर (MIL) नाम दिया गया है और यह .अंदर रहता है। यह डायरेक्टX के साथ सीधे इंटरफेस करता है और 2D और 3D सतहों के लिए बुनियादी समर्थन प्रदान करता है, उच्च स्तर पर एनीमेशन निर्माणों को उजागर करने की दृष्टि से सतह की सामग्री का टाइमर-नियंत्रित हेरफेर, और अंतिम 3D दृश्य में WPF एप्लिकेशन के व्यक्तिगत तत्वों को संयोजित करना जो एप्लिकेशन के UI का प्रतिनिधित्व करता है और इसे स्क्रीन पर प्रस्तुत करता है।  डेस्कटॉप विंडो प्रबंधक डेस्कटॉप और विंडो संरचना के लिए भी MIL का उपयोग करता है। मीडिया कोडेक भी अप्रबंधित कोड में कार्यान्वित किए जाते हैं, और इन्हें window. प्रबंधित दुनिया में, प्रेजेंटेशनकोर MIL के लिए एक प्रबंधित आवरण प्रदान करता है और WPF के लिए मुख्य सेवाओं को लागू करता है, एक संदेश प्रेषण पद्धति के माध्यम से   एक विशेष घटना पद्धति और सेवाओं को लागू करने के लिए ऑब्जेक्ट जो एक लेआउट पद्धति को लागू कर सकती है जैसे कि UI तत्वों के लिए माप। प्रस्तुति ढांचा  लेआउट, टाइम-डिपेंडेंट, स्टोरी-बोर्ड आधारित एनिमेशन और डेटा बाइंडिंग सहित एंड-यूज़र प्रेजेंटेशनल विशेषताओं को लागू करता है।

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

WPF एप्लिकेशन के अंतरापृष्ठ तत्वों को   ऑब्जेक्ट के एक वर्ग के रूप में बनाए रखा जाता है। विज़ुअल ऑब्जेक्ट एक कंपोज़िशन ट्री को एक प्रबंधित अंतरापृष्ठ प्रदान करते हैं जिसे मीडिया इंटीग्रेशन लेयर (MIL) द्वारा बनाए रखा जाता है। WPF का प्रत्येक तत्व एक या अधिक रचना नोड बनाता और जोड़ता है। कंपोज़िशन नोड्स में रेंडरिंग निर्देश होते हैं, जैसे कि क्लिपिंग और ट्रांसफ़ॉर्मेशन निर्देश, अन्य विज़ुअल एट्रिब्यूट के साथ। इस प्रकार संपूर्ण एप्लिकेशन को रचना नोड्स के संग्रह के रूप में दर्शाया जाता है, जो सिस्टम मेमोरी में एक बफर में संग्रहीत होते हैं। समय-समय पर, MIL चलता है और प्रत्येक नोड में रेंडरिंग निर्देशों को निष्पादित करता है, इस प्रकार प्रत्येक तत्व को DirectX सतह पर रचना करता है, जिसे बाद में स्क्रीन पर प्रस्तुत किया जाता है। MIL पेंटर के एल्गोरिदम का उपयोग करता है, जहां सभी घटकों को स्क्रीन के पीछे से सामने की ओर प्रस्तुत किया जाता है, जिससे पारदर्शिता जैसे जटिल प्रभावों को आसानी से प्राप्त किया जा सकता है। यह रेंडरिंग प्रक्रिया GPU के उपयोग से हार्डवेयर त्वरित है। कंपोज़िशन ट्री को MIL द्वारा कैश किया जाता है, एक रिटेन्ड मोड बनाया जाता है, ताकि कंपोज़िशन ट्री में किसी भी बदलाव को केवल MIL को संवर्धित रूप से संप्रेषित करने की आवश्यकता हो। यह स्क्रीन को फिर से पेंट करने के प्रबंधन के अनुप्रयोगों को भी मुक्त करता है; MIL स्वयं ऐसा कर सकती है क्योंकि उसके पास आवश्यक सभी जानकारी है। कंपोज़िशन ट्री में समय-प्रेरित परिवर्तन के रूप में एनिमेशन को लागू किया जा सकता है। उपयोगकर्ता के दृश्य पक्ष पर, एनीमेशन को एक गुण के माध्यम से कुछ तत्व के लिए कुछ एनीमेशन प्रभाव सेट करके और अवधि निर्दिष्ट करके घोषणात्मक रूप से निर्दिष्ट किया जाता है। कोड-बैक    ऑब्जेक्टहै। MIL स्वचालित रूप से तत्व में परिवर्तन प्रस्तुत करेगा।

सभी WPF एप्लिकेशन दो थ्रेड्स से प्रारम्भ होते हैं: एक UI के प्रबंधन के लिए और दूसरा बैकग्राउंड थ्रेड रेंडरिंग और रीपेंटिंग को संभालने के लिए। रेंडरिंग और रीपेंटिंग का प्रबंधन स्वयं WPF द्वारा किया जाता है, बिना किसी विकासकर्ता के हस्तक्षेप के। UI थ्रेड में डिस्पैचर होता है (उदाहरण के माध्यम से ), जो UI संचालन की एक कतार बनाए रखता है जिसे निष्पादित करने की आवश्यकता होती है (एक पेड़ के रूप में   ऑब्जेक्ट्स)। लेआउट को प्रभावित करने वाली गुण को बदलने सहित UI ईवेंट, और उठाए गए उपयोगकर्ता पारस्परिक क्रिया इवेंट डिस्पैचर में कतारबद्ध होते हैं, जो ईवेंट के लिए हैंडलर को आमंत्रित करते हैं। माइक्रोसॉफ्ट अनुशंसा करता है कि इवेंट हैंडलर केवल पृष्ठभूमि थ्रेड में उत्पन्न या पुनर्प्राप्त की जा रही नई सामग्री के साथ, एप्लिकेशन जवाबदेही के लिए नई सामग्री को प्रतिबिंबित करने के लिए गुणों को अपडेट करें। रेंडर थ्रेड विज़ुअल ट्री की एक कॉपी उठाता है और ट्री की गणना करता है कि कौन से घटक दिखाई देंगे और उन्हें डायरेक्ट 3D सतहों पर रेंडर करता है। रेंडर थ्रेड विज़ुअल ट्री को भी कैश करता है, इसलिए केवल ट्री में बदलावों को संप्रेषित करने की आवश्यकता होती है, जिसके परिणामस्वरूप केवल बदले हुए पिक्सेल अपडेट होंगे। WPF एक एक्स्टेंसिबल लेआउट प्रतिरूप का समर्थन करता है। लेआउट को दो चरणों में विभाजित किया गया है: माप; और व्यवस्थित करें। माप चरण पुनरावर्ती रूप से सभी तत्वों को कॉल करता है और उनके द्वारा लिए जाने वाले आकार को निर्धारित करता है। व्यवस्था चरण में, बाल तत्वों को पुनरावर्ती रूप से उनके माता-पिता द्वारा व्यवस्थित किया जाता है, उपयोग में लेआउट मॉड्यूल के लेआउट एल्गोरिदम को लागू किया जाता है।

उपकरण
विंडोज प्रेजेंटेशन फाउंडेशन अनुप्रयोगों के विकास के लिए कई विकास उपकरण उपलब्ध हैं।

माइक्रोसॉफ्ट टूल्स

 * माइक्रोसॉफ्ट विजुअल स्टूडियो एक विकासकर्ता-उन्मुख एकीकृत विकास पर्यावरण है जिसमें विजुअल स्टूडियो 2008 से प्रारम्भ होने वाले XAML संपादक और WPF विज़ुअल विकासकर्ता का संयोजन समिलित है।
 * विज़ुअल स्टूडियो 2008 से पहले, WPF विकासकर्ता ऐड-इन, कोड नाम साइडर, WPF विंडो, पेज और उपयोगकर्ता नियंत्रण बनाने के लिए WYSIWYG संपादक का मूल रिलीज़ था। यह विजुअल स्टूडियो 2005 के लिए .NET फ्रेमवर्क 3.0 बेटावेयर के लिए विजुअल स्टूडियो 2005 एक्सटेंशन के रूप में WPF के शुरुआती रिलीज के लिए उपलब्ध था।
 * माइक्रोसॉफ्ट विजुअल स्टूडियो एक्सप्रेस 2008 और बाद के संस्करण, विशेष रूप से विजुअल C # एक्सप्रेस और विजुअल बेसिक एक्सप्रेस, में भी WPF विकासकर्ता एकीकृत है।
 * माइक्रोसॉफ्ट ब्लेंड एक विकासकर्ता-उन्मुख उपकरण है जो 2D और 3D ग्राफिक्स, टेक्स्ट और फॉर्म सामग्री के साथ WPF अनुप्रयोगों के निर्माण के लिए एक आर्टबोर्ड प्रदान करता है। यह एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज उत्पन्न करता है जिसे माइक्रोसॉफ्ट विजुअल स्टूडियो के साथ अन्य टूल्स और शेयर सॉल्यूशन (एसएलएन फाइल) और प्रोजेक्ट फॉर्मेट (csproj, vbproj) में निर्यात किया जा सकता है।
 * माइक्रोसॉफ्ट अभिव्यक्ति डिजाइन एक्सटेंसिबल एप्लिकेशन मार्कअप लैंग्वेज को निर्यात करने के लिए एक बिटमैप और 2D-वेक्टर ग्राफिक्स टूल है।
 * XAMLPad .NET फ्रेमवर्क SDK में समिलित एक हल्का टूल है। यह विभाजित स्क्रीन UI लेआउट का उपयोग करके XAML फ़ाइलें बनाता और प्रस्तुत कर सकता है। यह पैनल में मार्कअप का ट्री व्यू भी प्रदान करता है।

तृतीय-पक्ष टूल

 * SharpDevelop, एक ओपन-सोर्स .NET IDE, में WPF एप्लिकेशन प्रारुपण क्षमताएं समिलित हैं। यह विजुअल स्टूडियो का एक निःशुल्क विकल्प है।
 * पॉवरबिल्डर .NET by Sybase एक 4GL टूल है जो पॉवरबिल्डर कोड, ग्राफिकल ऑब्जेक्ट्स को XAML में अनुवाद करता है और एप्लिकेशन को WPF लक्ष्य के रूप में नियुक्त करने की अनुमति देता है।
 * WPF के लिए आवश्यक स्टूडियो तुल्यकालन द्वारा सुंदर, उच्च प्रदर्शन लाइन-ऑफ-बिजनेस WPF अनुप्रयोगों के निर्माण के लिए 100 से अधिक आधुनिक WPF UI नियंत्रणों का एक पैकेज है।

परिनियोजन
WPF का परिनियोजन प्रतिरूप स्टैंडअलोन और XAML ब्राउज़र एप्लिकेशन (XBAP) फ्लेवर दोनों प्रदान करता है। किसी भी प्रकार के एप्लिकेशन के निर्माण के लिए प्रोग्रामिंग प्रतिरूप समान है।

स्टैंडअलोन एप्लिकेशन वे हैं जिन्हें क्लिकऑन या विंडोज इंस्टालर (MSI) जैसे सॉफ़्टवेयर का उपयोग करके कंप्यूटर पर स्थानीय रूप से स्थापित किया गया है और जो डेस्कटॉप पर चलते हैं। स्टैंडअलोन एप्लिकेशन को 'पूर्ण विश्वास' माना जाता है और कंप्यूटर के संसाधनों तक उनकी पूर्ण पहुंच होती है।

XAML ब्राउज़र एप्लिकेशन (XBAPs) ऐसे प्रोग्राम हैं जो एक वेब ब्राउज़र के अंदर होस्ट किए जाते हैं। प्री-.NET4 XBAP एप्लिकेशन 'आंशिक विश्वास' सैंडबॉक्स (कंप्यूटर सुरक्षा) वातावरण में चलते हैं, और उन्हें कंप्यूटर के संसाधनों तक पूर्ण पहुंच नहीं दी जाती है और सभी WPF कार्यक्षमता उपलब्ध नहीं होती है। होस्ट किए गए वातावरण का उद्देश्य कंप्यूटर को दुर्भावनापूर्ण एप्लिकेशन से सुरक्षित रखना है। XBAPs कंप्यूटर संसाधनों तक पूर्ण पहुंच के साथ .NET 4 में पूरी तरह से विश्वसनीय अनुप्रयोगों के रूप में चल सकते हैं। एक HTML पृष्ठ से XBAP प्रारंभ करना या इसके विपरीत सहज है (कोई सुरक्षा या स्थापना संकेत नहीं है)। हालाँकि किसी को ब्राउज़र में चल रहे एप्लिकेशन की धारणा मिलती है, लेकिन यह वास्तव में ब्राउज़र से भिन्न एक आउट-ऑफ़-प्रोसेस निष्पादन योग्य में चलता है।

इंटरनेट एक्सप्लोरर
.NET फ्रेमवर्क 3.0 के जारी होने के साथ ही, XBAPs केवल IE में चलेंगे।

फ़ायरफ़ॉक्स समर्थन
.NET Framework 3.5 SP1 की रिलीज़ के साथ, XBAP समिलित एक्सटेंशन का उपयोग करके Mozilla Firefox में भी चलता है। 16 अक्टूबर 2009 को, मोज़िला ने फ़ायरफ़ॉक्स प्लगइन और एक्सटेंशन को अपने ऐड-ऑन ब्लॉकलिस्ट में जोड़ा, क्योंकि माइक्रोसॉफ्ट के साथ समझौते में दूर से शोषण योग्य गंभीर सुरक्षा भेद्यता थी। दो दिन बाद, ब्लॉक हटा दिया गया था। विंडोज 7 पर, फ़ायरफ़ॉक्स प्लगइन डिफ़ॉल्ट रूप से नहीं चलता है। .NET Framework 3.5 SP1 की पुनर्स्थापना प्लगइन स्थापित करेगी और फ़ायरफ़ॉक्स पर XBAP अनुप्रयोगों के लिए समर्थन जोड़ेगी। वैकल्पिक रूप से, मोज़िला फ़ायरफ़ॉक्स की प्लगइन निर्देशिका में काम कर रहे विंडोज XP/विस्टा इंस्टॉलेशन से प्लगइन डायनामिक-लिंक लाइब्रेरी को हार्ड-कॉपी करना भी XBPM अनुप्रयोगों के लिए समर्थन बहाल करेगा। WPF प्लगइन डीएलएल निम्नलिखित निर्देशिकाओं में रहते हैं (फ्रेमवर्क संस्करण के आधार पर):


 * 3.5 [एसपी1]
 * C:\विंडोज\माइक्रोसॉफ्ट.NET\Framework\v3.5\WPF\NPWPF.dll


 * 4.0
 * सी:\विंडोज\माइक्रोसॉफ्ट.NET\Framework\WPF\NPWPF.dll

माइक्रोसॉफ्ट सिल्वरलाइट
सिल्वरलाइट (कोड नाम WPF/E) एक बहिष्कृत क्रॉस-ब्राउज़र, ब्राउज़र प्लगइन है जिसमें WPF- आधारित तकनीक (XAML सहित) समिलित है। जिसने विंडोज 7, विंडोज विस्टा, विंडोज XP और Mac OS X सहित कई ऑपरेटिंग सिस्टमों के लिए वीडियो, वेक्टर ग्राफिक्स और एनिमेशन जैसी सुविधाएं प्रदान की है। माइक्रोसॉफ्ट ने कुछ लिनक्स वितरणों के लिए सिरों पर काम करने के लिए सीमित संख्या में तीसरे पक्ष के विकासकर्ता को मंजूरी दी। विशेष रूप से, यह मोज़िला फ़ायरफ़ॉक्स, इंटरनेट एक्सप्लोरर 6 और ऊपर, गूगल क्रोम 42 और नीचे सफारी (वेब ​​ब्राउज़र) को जोड़ने के लिए बनाया गया है।

.नेट माइक्रो फ्रेमवर्क
.NET माइक्रो फ्रेमवर्क में WPF पर आधारित एक GUI ऑब्जेक्ट प्रतिरूप समिलित है, हालांकि XAML के लिए समर्थन के बिना।

ग्रन्थसूची

 * Adam Nathan: विंडोज Presentation Foundation Unleashed (WPF), December 21, 2006, Sams Publishing, ISBN 0-672-32891-7
 * Chris Anderson: Essential विंडोज Presentation Foundation (WPF), April 11, 2007, Addison-Wesley, ISBN 0-321-37447-9
 * Chris Sells, Ian Griffiths: Programming WPF, August 28, 2007, O'Reilly Media, ISBN 0-596-51037-3
 * Arlen Feldman, Maxx Daymon: WPF in Action with Visual Studio 2008, November 21, 2008, Manning Publications, ISBN 1-933988-22-3

बाहरी संबंध

 * MSDN Library: विंडोज Presentation Foundation
 * Rich typography with विंडोज Presentation Foundation
 * विंडोज Presentation Foundation User Education