Windows Presentation Foundation

Windows Presentation Foundation (בקיצור WPF) הוא מודל וכלי פיתוח תוכנה מבית מיקרוסופט למערכת ההפעלה חלונות, עם דגש על עיצוב גרפי מתקדם של ממשק המשתמש. WPF החל דרכו תחת שם הקוד Avalon, פורסם במגזין MSDN בסוף 2004, הושק ב-2006 ויועד לשילוב במערכת ההפעלה שנקראה בשם הקוד Longhorn ונודעה לאחר מכן בשמה ויסטה. המודל הושק כחלק מפלטפורמת ‎.NET 3 החל מחבילת הפיתוח ויז'ואל סטודיו 2008.
WPF חולל למעשה מהפך של ממש עבור מפתחי Windows מאז מערכת ההפעלה Windows 95. במודל זה לא נעשה שימוש בליבת החלונות הסטנדרטית Windows Forms המבוססת על המנועים User32 ו-GDI/GDI+‎ שבתפישתה טכנולוגיה מיושנת הקיימת כשני עשורים. אלא הוכנסה לשימוש אינסטלציה חדשה המבוססת על ספריית DirectX שהפכה לחלק בלתי נפרד ממערכות ההפעלה של מיקרוסופט. בדרך זו מתאפשר למפתחי החלונות לנצל האצת חומרה ויתרונות נוספים של חומרת התצוגה על מנת להעשיר את חזות החלונות. מנהל התצוגה של Windows 7 משתמש בספריות שהן חלק מתשתית WPF (נקרא Media Integration Layer) כדי לרנדר את שולחן העבודה.
מפתחי WPF הושפעו מטכנולוגיות כמו פלאש והוא דומה קצת לטכנולוגיות כמו XUL של מוזילה פיירפוקס ו-SVG. ממשק המשתמש מעוצב באמצעות שפת תגיות מבוססת XML הקרויה XAML קיצור של Extensible Application Markup Language (מבוטא "זאמל") ומופרד מקוד התוכנה המתנהל מאחורי הקלעים בדומה ל-ASP.NET. היכולת לעצב את ממשק המשתמש ללא תלות בקוד התוכנה מאפשרת הפחתת התלות בין המתכנת למעצב. בדרך זו ניתן לעצב ממשק בנפרד תוך שימוש בכלים מתאימים ולחבר ביניהם לאחר מכן. ספריות זמן הריצה (CLR) של WPF כלולות בכל מערכות ההפעלה של מיקרוסופט החל מוויסטה, למעט משתמשי XP שלהם אופציית התקנה. נכון לשנת 2013 שוחררו חמש גרסאות WPF גרסה 3.0 הראשונה פורסמה בנובמבר 2006 גרסה 3.5 ב-2007 ובאוגוסט 2008 שוחררה גרסת המשך 3.5sp1. בשנת 2010 יצאה גרסה 4 ובאוגוסט 2012 שוחררה גרסה 4.5.

WPF לעומת UWP

Universal Windows Platform שהושקה עם Windows 10 מהווה טכנולוגיה חלופית שאמורה להיות חוצה-פלטפורמות ונראה שבמיקרוסופט נוטים להעדיפה על פני WPF. ישנם יתרונות לשימוש ב-WPF; העובדה שהוא מתאים גם למערכות הפעלה קודמות וכן בניגוד ל-UWP הפועלת בשיטת ארגז חול, למפתח יש יותר שליטה במתרחש מאחורי הקלעים.

רזולוציה

היות שתצוגת חלונות תלויה ברזולוציית המסך, קיימת בעיה בחלונות ישנים שעלולים להראות קטנים במסך הבחנה גבוהה כיוון שממשק המשתמש הישן נקבע מראש לרזולוציה של 96 פיקסל לאינץ' (PPI). במסך התומך ב-144 פיקסל או יותר, סביר להניח שחלונות יוצגו זעירים מדי ואף בלתי ניתנים לקריאה. ויסטה ו-Windows 7 מנסות לפצות על הבעיה על ידי התייחסות לחלון כאל תמונה, המערכת מגדילה את החלון באופן יחסי ומתרגמת את מערכת הקואורדינטות שלו בזמן העבודה, זה עובד אך התוצאה לא תמיד טובה. יתרה מזו גם אם החלון תומך ברזולוציה גבוהה המערכת אינה יודעת זאת מבלי שהתוכנה תיידע אותה. תמיכה ברזולוציה גבוהה ניתנת להכרזה באמצעות פונקציות API.
אידיאלית הפתרון הוא הוספה או הפחתה של פיקסלים כדי לשמר את מידות החלון בכל המסכים ללא תלות ברזולוציה בין אם יוצג במקרן ענק או בטלפון חכם. ההבדל היחידי יהיה בכמות הפרטים (פיקסלים) שיוצגו. WPF אינו מסתמך על רזולוציית המסך הפיזית אלא על מה שקרוי "רזולוציית מערכת". החלון וכל האלמנטים שבו משתמשים ביחידות מידה לוגיות בלתי-תלויות התקן בגודל 1/96 אינץ'. בזמן ההצגה למסך מתבצעת המרה ליחידות פיזיות ונקבע מכמה פיקסלים יורכב כל אלמנט בהתאם לנתוני המערכת. יתרה מזו, אם קצוות האלמנט נופלים בין הפיקסלים WPF מבצע מיזוג של פיקסלים סמוכים בטכניקה הקרויה Anti-aliasing (בדומה לתוכנות גרפיות כמו אדובי פוטושופ). באופן זה מובטח שפרופורציות חלון היישום והאלמנטים הכלולים בו יישמרו מבלי לדעת מה תהיה הרזולוציה הפיזית בזמן הפעלת היישום. הנוסחה לפיה ממיר WPF את מערכת הקואורדינטות ליחידות מידה בפועל היא:

Multitargeting

WPF הוא כלי פיתוח מבוסס חלונות, לכן אפליקציית WPF תרוץ רק מעל מחשב בו מותקנת מערכת הפעלה חלונות בשל התלות בטכנולוגיות ‎.NET ו-DirectX. גם אפליקציית WPF מבוססת דפדפן תפעל רק ב-Windows, אם כי קיימת תמיכה לדפדפנים שאינם מבית מיקרוסופט. קיים יוצא מן הכלל סילברלייט המנסה להתחרות בפלאש, שמיישם חלק מתשתית WPF כתוסף לדפדפנים מודרניים פיירפוקס, ספארי וגוגל כרום ופותח אפשרות לניצול הטכנולוגיה הזו גם במערכות הפעלה אחרות כ-MacOS ולינוקס.
עד גרסת 2010, ויז'ואל סטודיו הותאם באופן הדוק לגרסת ‎.NET ספציפית. בוויזואל סטודיו 2010 הוסרה המגבלה, למעט ב-‎.NET 2 ניתן ליישם את WPF בכל גרסת ‎.NET. אפשר לייעד יישום WPF לתשתית ‎.NET ספציפית בכל שלב (מה שנקרא Multitargeting) על מנת להבטיח מקסימום תאימות ו/או ניצול מרבי של היכולות. ניתן לייעד יישום WPF גם לגרסה קלת משקל של ‎.NET 4 הנקראת Client Profile שהיא חלק מהתשתית, ממנו הופשטו מספר מאפייני צד שרת כמו ניפוי שגיאות ASP.NET או תמיכה במסד נתונים של אורקל וכדומה. נפח ההורדה של גרסה זו כ-40 מגה. ברירת המחדל בוויז'ואל סטודיו 2010 היא ‎.NET Framework 4 Client Profile. ב-‎.NET 4.5 לא קיימת גרסת Client Profile, הגרסה המלאה מגיעה לסדר גודל של 50 מגה, מה שמייתר את הצורך בגרסה מוקטנת.