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

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

सिंहावलोकन
WPF विभिन्न इंटरफ़ेस तत्वों को परिभाषित करने और लिंक करने के लिए एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज, एक XML- आधारित भाषा का उपयोग करता है। WPF एप्लिकेशन को स्टैंडअलोन डेस्कटॉप प्रोग्राम के रूप में तैनात किया जा सकता है या किसी वेबसाइट में एम्बेडेड ऑब्जेक्ट के रूप में होस्ट किया जा सकता है। WPF का उद्देश्य कई सामान्य उपयोगकर्ता इंटरफ़ेस तत्वों को एकीकृत करना है, जैसे कि 2D/3D रेंडरिंग, फिक्स्ड और अनुकूली दस्तावेज़ फ़ाइल स्वरूप, टाइपोग्राफी, वेक्टर ग्राफिक्स, रनटाइम एनिमेशन और प्री-रेंडर मीडिया। इन तत्वों को विभिन्न घटनाओं, उपयोगकर्ता इंटरैक्शन और डेटा बाइंडिंग के आधार पर जोड़ा और हेरफेर किया जा सकता है। Windows Vista और Windows Server 2008 के बाद से WPF क्रम पुस्तकालय Microsoft Windows के सभी संस्करणों में शामिल है। Windows XP SP2/SP3 और Windows Server 2003 के उपयोगकर्ता वैकल्पिक रूप से आवश्यक लाइब्रेरी स्थापित कर सकते हैं। Microsoft सिल्वरलाइट ने कार्यक्षमता प्रदान की जो एडोब फ्लैश के तुलनीय एम्बेडेड वेब नियंत्रण प्रदान करने के लिए ज्यादातर WPF का एक सबसेट है। सिल्वरलाइट 5 के बाद से सिल्वरलाइट में 3डी रनटाइम रेंडरिंग का समर्थन किया गया था। 4 दिसंबर, 2018 को माइक्रोसॉफ्ट कनेक्ट इवेंट में, माइक्रोसॉफ्ट ने GitHub पर WPF को ओपन सोर्स प्रोजेक्ट के रूप में जारी करने की घोषणा की। यह मेरा लाइसेंस के तहत जारी किया गया है। विंडोज़ प्रेजेंटेशन फ़ाउंडेशन .NET Core|.NET सॉफ़्टवेयर फ़्रेमवर्क को लक्षित करने वाली परियोजनाओं के लिए उपलब्ध हो गया है, हालाँकि, सिस्टम क्रॉस-प्लेटफ़ॉर्म नहीं है और अभी भी केवल विंडोज़ पर उपलब्ध है।

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

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

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

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

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

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

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

एनिमेशन

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

इमेजिंग

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

प्रभाव

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

दस्तावेज़

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

पाठ

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

इंटरऑपरेबिलिटी
WinForms के उपयोग को सक्षम करने के लिए, डेवलपर इसे अपने WPF C# कोड से निष्पादित करता है: System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop ;
 * विंडोज फॉर्म के प्रयोग से भी संभव है  और   कक्षाएं।

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

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

अभिगम्यता

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

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

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

आर्किटेक्चर


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

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

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

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

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

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

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

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

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

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

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

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


 * 3.5 [एसपी1]
 * C:\Windows\Microsoft.NET\Framework\v3.5\WPF\NPWPF.dll


 * 4.0
 * सी:\Windows\Microsoft.NET\Framework\WPF\NPWPF.dll

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

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

ग्रन्थसूची

 * Adam Nathan: Windows Presentation Foundation Unleashed (WPF), December 21, 2006, Sams Publishing, ISBN 0-672-32891-7
 * Chris Anderson: Essential Windows 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: Windows Presentation Foundation
 * Rich typography with Windows Presentation Foundation
 * Windows Presentation Foundation User Education