Windows Presentation Foundation

Open source UI framework

Windows Presentation Foundation (WPF)Original author(s)| Microsoft

|

Developer(s)| .NET Foundation
Initial release| November 21, 2006; 17 years ago (2006-11-21)
Stable release|

v8.0.0 / November 14, 2023; 6 months ago (2023-11-14)[1]

Repository|

* github.com/dotnet/wpf

Written in| C#, C++, C
Operating system| Microsoft Windows
Platform| .NET Framework, .NET
Type| Software framework
License| MIT License
Website| learn.microsoft.com/en-us/dotnet/desktop/wpf/

Windows Presentation Foundation (WPF) is a free and open-source user interface framework for Windows-based desktop applications. WPF applications are based in .NET, and are primarily developed using C# and XAML.[2]

Originally developed by Microsoft, WPF was initially released as part of .NET Framework 3.0 in 2006. In 2018, Microsoft released WPF as open source under the MIT License.

## Overview[edit]

WPF employs XAML, an XML-based language, to define and link various interface elements, and uses C# to define program behavior.[3] WPF applications are deployed as standalone desktop programs.

WPF aims to unify a number of common user interface elements, such as 2D/3D rendering, fixed and adaptive documents, typography, vector graphics, runtime animation, and pre-rendered media. These elements can then be linked and manipulated based on various events, user interactions, and data bindings.[4]

WPF runtime libraries are included with all versions of Microsoft Windows since Windows Vista and Windows Server 2008.

At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing WPF as open source project on GitHub. It is released under the MIT License. Windows Presentation Foundation has become available for projects targeting the .NET software framework, however, the system is not cross-platform and is still available only on Windows.[5][6]

## Code examples[edit]

Screenshot of developing a basic Windows Presentation Foundation (WPF) UI application in Visual Studio 2022. XAML is used to define the layout, while C# is used to define the interactive behavior.

In WPF, screens and other UI elements are defined using a pair of files: a XAML file and an associated C# file with the extension `.xaml.cs`, often referred to as a "code-behind". The XAML file declaratively defines the layout, contents and other properties of the UI element, while the C# file allows exposure of code entry points for interactivity.[3]

A basic example of an interactive Hello, World! program could be created like so:

MainWindow.xaml:

<Window x:Class="WpfExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="300">
<StackPanel Orientation="Vertical">
<TextBlock Text="What is your name?"/>
<TextBox x:Name="NameInputTextBox"/>
<Button x:Name="SubmitButton" Click="SubmitButton_Click">
<TextBlock Text="Submit"/>
</Button>
<TextBlock x:Name="ResultTextBlock"/>
</StackPanel>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace WpfExample

public partial class MainWindow : Window

public MainWindow()

InitializeComponent();

private void SubmitButton_Click(object sender, RoutedEventArgs e)

var name = this.NameInputTextBox.Text;
this.ResultTextBlock.Text = $"Hello {name}!";

In the above example, a UI element called `MainWindow` is declared as a subclass of the built-in `Window` class. The XAML file defines the layout, which in this example is a vertical collection of controls - a textblock outlining instructions to the user, a textbox for the user to type their name, a button to submit, and a results text box. When the button is clicked, the method `SubmitButton_Click` is called, which is defined in the `.xaml.cs` file. This function updates the final textblock to contain a message greeting the user, addressing them by their submitted name.

## Features[edit]

### Media and Graphics[edit]

WPF supports most modern media types, including vector and raster images, audio, video, and can support both 2D and 3D rendering.[7] It also supports implementing graphical effects on visual elements, such as HLSL pixel shaders and built-in effects such as blurs and drop shadows.[8][9]

Graphics, including desktop items like windows, are rendered using Direct3D, which allows Windows to offload some graphics tasks to the GPU. This reduces the workload on the computer's CPU.

WPF mainly relies on vector graphics, which allows most controls and elements to be scaled without loss in quality or pixelization.[10][11]

### Data binding[edit]

WPF employs data binding, a technique of propagating changes between user interface elements and the object model of the program.[12] For instance, a textblock defined in XAML could bind its contents to a string property stored on a C# object in the following way:

<TextBlock Text="{Binding Username}" />

public class ExampleViewModel

public string Username { get; set; }

This would make the textblock display the value of the `Username` property.

The direction data binding happens is configurable - it can be defined to go UI-to-source (eg. text entered into a textbox being propagated to a bound string property in code), or source-to-UI (eg. a visual clock being updated to display the current time stored in code), or bi-directional.[12]

Data binding doesn't have any restrictions on types, and it is possible to bind structs, classes, or collections. Converters can be used to transpose the values and types being used during binding - for example, binding a textbox to a DateTime property, but using a converter to display the time as a formatted localised date string.[12]

Most properties on built-in controls can be databound, and custom-made controls can create bindable properties by defining Dependency Properties.[12][13]

### Styles and templates[edit]

Using templates and styles, developers can define the visuals and structure of UI elements.

A style is a combination of property settings that can be applied to a UI element with a single property attribute. For example, a "blue radio button" style could be created and then be reused on any number of radio button controls throughout the program. Styles can alter collections of properties of controls, but are not not intended for significant structural changes.

Templates are a mechanism for defining alternative UI for portions of a WPF application. There are several template types available in WPF for different scenarios, but they all have the general purpose of defining the contents, layout and structure of a UI element.[14]

### Animations[edit]

In WPF, many visual properties can be animated. This is exposed through dependency properties, which is the same underlying system that data binding relies on. WPF animations are time-based, as opposed to frame-based based.[15]

Animation classes are based on the .NET type of property to be animated. For instance, changing the color of an element is done with the ColorAnimation class and animating the width of an element (which is typed as a double) is done with the DoubleAnimation class.[15]

Animations can be grouped into Storyboards, which are the primary way to start, stop, pause and otherwise manipulate animations.[15]

### Documents and Text[edit]

WPF natively supports paginated documents. It provides the `DocumentViewer` class, which is for reading fixed layout documents. The `FlowDocumentReader` class offers different view modes such as per-page or scrollable and also reflows text if the viewing area is resized. It supports both the XML Paper Specification and Open Packaging Conventions.[16]

WPF includes a number of text rendering features, including OpenType, TrueType, and OpenType CFF (Compact Font Format) fonts. This means that WPF can support a wide number of text features, including ligatures, old-style numerals, swash variants, fraction, superscript and subscript, small caps, ruby characters, glyph substitution, multiple baselines, and kerning.[17]

WPF handles texts in Unicode, and handles texts independent of global settings, such as system locale. In addition, fallback mechanisms are provided to allow writing direction (horizontal versus vertical) handled independent of font name; building international fonts from composite fonts, using a group of single-language fonts; composite fonts embedding. Font linking and font fallback information is stored in a portable XML file, using composite font technology.[18] The XML file has extension .CompositeFont.

The WPF text engine also supports built-in spell checking. It also supports such features as automatic line spacing, enhanced international text, language-guided line breaking, hyphenation, and justification, bitmap effects, transforms, and text effects such as shadows, blur, glow, rotation etc. Animated text is also supported; this refers to animated glyphs, as well as real-time changes in position, size, color, and opacity of the text.

WPF text rendering takes advantage of advances in ClearType technology, such as sub-pixel positioning, natural advance widths, Y-direction anti-aliasing, hardware-accelerated text rendering, as well as aggressive caching of pre-rendered text in video memory.[19] ClearType cannot be turned off in older WPF 3.x applications.[20]

### Interoperability[edit]

Windows Forms features are possible through the use of the `ElementHost` and `WindowsFormsHost` classes.

To enable the use of WinForms, the developer executes this from their WPF C# code:[21]

System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop();

### Alternative input and accessibility[edit]

WPF supports digital ink-related functionality,[22] and multi-touch input on Windows 7 and above[23]. It also supports Microsoft UI Automation to allow developers to create accessible interfaces, and to expose the UI to automated test frameworks.[24]

## XAML[edit]

Main article: Extensible Application Markup Language

Following the success of markup languages for web development, WPF introduces eXtensible Application Markup Language (XAML; /ˈzæməl/), which is based on XML. XAML is designed as a more efficient method of developing application user interfaces.[25] The specific advantage that XAML brings to WPF is that XAML is a completely declarative language, allowing the developer (or designer) to describe the behavior and integration of components without the use of procedural programming. Although it is rare that an entire application will be built completely in XAML, the introduction of XAML allows application designers to more effectively contribute to the application development cycle. Using XAML to develop user interfaces also allows for separation of model and view, which is considered a good architectural principle. In XAML, elements and attributes map to classes and properties in the underlying APIs.

As in web development, both layouts and specific themes are well suited to markup, but XAML is not required for either. Indeed, all elements of WPF may be coded in a .NET language (C#, VB.NET). The XAML code can ultimately be compiled into a managed assembly in the same way all .NET languages are.

## Deployment[edit]

WPF applications are Windows-only standalone desktop executables.

Historically, WPF supported compiling to XBAP, a file format intended to be shown in web browsers via a NPAPI plugin, but NPAPI and XBAP support was phased out of support by browsers, and XBAP compilation is now no longer included for WPF for .NET.[26][27]

## Adoption[edit]

Visual Studio is an example of an application made using WPF

WPF is used to develop Visual Studio, Microsoft's flagship IDE, and was used for developing Microsoft Expression Blend.[28]

In 2010, Evernote publicly scrapped their Evernote 3.5 for Windows version, written in WPF, saying that "the blurry fonts, slow startup times, large memory footprint, and poor support for certain graphics cards were all issues that the technology behind 3.5 (Windows .net and WPF) was incapable of resolving". The replacement, Evernote 4.0, was written in C++.[29]

## Influence on other UI frameworks[edit]

An example of an app made with UWP, a XAML-based framework influenced by WPF

WPF and its layout language, XAML, have influenced multiple other UI frameworks.

Silverlight (codenamed WPF/E - WPF Everywhere), released in 2007, is a deprecated cross-browser browser plugin which contained WPF-based technology, including XAML, that provided features including video, vector graphics, and animations. Specifically, it was provided as an add-on for Mozilla Firefox, Internet Explorer 6 and above, Google Chrome 42 and below and Apple Safari. Microsoft encouraged developers to stop using Silverlight in 2015,[30] and support was officially ended in 2021.[31]

After becoming open source in 2018, WPF was forked for the project Avalonia, an open-source .NET cross-platform XAML-based UI framework, distributed under the MIT License. While WPF only is intended for Windows, Avalonia also supports builds for web (via WebAssembly), MacOS, Android, iOS, and Linux. Avalonia's name references WPF's in-development codename ("Avalon"), and markets itself as "a spiritual successor to WPF".[32] Avalonia is currently used in tools made by Unity, GitHub and JetBrains.[33]

XAML, which was first designed for WPF, has been adopted for other similar Microsoft-developed UI libraries, such as UWP,[34] designed for Windows 10, Windows 11, Xbox One and Xbox Series S/X applications, and .NET MAUI (formerly Xamarin.Forms), designed for creating cross-platform native Android and iOS apps.[35]

## Related Software[edit]

### Development Tools[edit]

A number of development tools are available for developing Windows Presentation Foundation applications.

* Microsoft Visual Studio is a developer-oriented IDE that contains a combination XAML editor and WPF visual designer, beginning with Visual Studio 2008.
* Prior to Visual Studio 2008, the WPF designer add-in, codenamed Cider, was the original release of a WYSIWYG editor for creating WPF windows, pages, and user controls. It was available for Visual Studio 2005 as a Visual Studio 2005 extensions for .NET Framework 3.0 CTP for the initial release of WPF.[36]
* Microsoft Blend is a designer-oriented tool that provides an artboard for the creation of WPF applications with 2D and 3D graphics, text and forms content. It generates XAML that may be exported into other tools and shares solution (sln files) and project formats (csproj, vbproj) with Microsoft Visual Studio.
* Microsoft Expression Design is a bitmap and 2D-vector graphics tool for exporting to XAML.

## References[edit]

1. ^ "v8.0.0". github.com. 2023-11-14. Retrieved 2023-11-21.
2. ^ "What is Windows Presentation Foundation - WPF .NET". learn.microsoft.com. 2023-06-02. Retrieved 2024-05-15.
3. ^ a b dotnet-bot. "XAML Overview (WPF)". msdn.microsoft.com. Retrieved 31 March 2018.
4. ^ Sells, Chris; Griffiths, Ian (2007). Programming WPF: Building Windows UI with Windows Presentation Foundation. "O'Reilly Media, Inc.". ISBN 9780596554798.
5. ^ Martin, Jeff (4 December 2018). "Microsoft Open Sources WPF, WinForms, and WinUI". InfoQ. Retrieved 2018-12-06.
6. ^ Hanselman, Scott (4 December 2018). "Announcing WPF, WinForms, and WinUI are going Open Source". Retrieved 2018-12-06.
7. ^ Graphics and Multimedia. Msdn.Microsoft.com. Retrieved on 2013-08-29.
8. ^ dotnet-bot. "Effect Class (System.Windows.Media.Effects)". learn.microsoft.com. Retrieved 2024-05-22.
9. ^ dotnet-bot. "PixelShader Class (System.Windows.Media.Effects)". learn.microsoft.com. Retrieved 2024-05-22.
10. ^ "Introducing Windows Presentation Foundation". msdn.microsoft.com. Retrieved 31 March 2018.
11. ^ "What's New in WPF 3.5? Here's Fifteen Cool Features..." Retrieved 2007-10-14.
12. ^ a b c d adegeo (2023-09-02). "Data binding overview - WPF .NET". learn.microsoft.com. Retrieved 2024-05-22.
13. ^ adegeo (2022-06-28). "Dependency properties overview - WPF .NET". learn.microsoft.com. Retrieved 2024-05-22.
14. ^ adegeo (2023-03-03). "Styles and templates - WPF .NET". learn.microsoft.com. Retrieved 2024-05-22.
15. ^ a b c adegeo (2022-03-17). "Animation Overview - WPF .NET Framework". learn.microsoft.com. Retrieved 2024-05-22.
16. ^ adegeo (2023-02-06). "Documents Overview - WPF .NET Framework". learn.microsoft.com. Retrieved 2024-05-22.
17. ^ adegeo (2022-08-18). "OpenType Font Features - WPF .NET Framework". learn.microsoft.com. Retrieved 2024-05-22.
18. ^ "Typography in Windows Presentation Foundation". msdn.microsoft.com. Retrieved 31 March 2018.
19. ^ dotnet-bot. "ClearType Overview". msdn.microsoft.com. Retrieved 31 March 2018.
20. ^ "Disable Antialiasing". social.msdn.microsoft.com. Retrieved 31 March 2018.
21. ^ dotnet-bot. "WindowsFormsHost.EnableWindowsFormsInterop Method (System.Windows.Forms.Integration)". learn.microsoft.com. Retrieved 2024-05-22.
22. ^ adegeo (2022-08-18). "Digital ink - Windows Forms and COM vs. WPF". learn.microsoft.com. Retrieved 2024-05-22.
23. ^ kexugit (2015-08-12). "MSDN Magazine: UI Frontiers - Multi-Touch Manipulation Events in WPF". learn.microsoft.com. Retrieved 2024-05-22.
24. ^ Xansky. "UI Automation Overview". msdn.microsoft.com. Retrieved 31 March 2018.
25. ^ MacDonald, Matthew (2010). Pro WPF in VB 2010: Windows Presentation Foundation in .NET 4. Apress. ISBN 9781430272403.
26. ^ adegeo. "FAQ about XBAP supportability". learn.microsoft.com. Retrieved 2024-05-15.
27. ^ kexugit (2011-03-09). "IE9 - XBAPs Disabled in the Internet Zone". learn.microsoft.com. Retrieved 2024-05-15.
28. ^ Blog, Visual Studio (2010-02-16). "WPF in Visual Studio 2010 - Part 1 : Introduction". Visual Studio Blog. Retrieved 2024-05-22.
29. ^ "Evernote 4 for Windows is here! « Evernote Blogcast". web.archive.org. 2011-05-13. Retrieved 2024-05-22.
30. ^ Blog, Microsoft Edge; Smith, Jerry (2015-07-02). "Moving to HTML5 Premium Media". Microsoft Edge Blog. Retrieved 2024-05-23.
31. ^ GitHub-Name. "Silverlight 5 - Microsoft Lifecycle". learn.microsoft.com. Retrieved 2024-05-23.
32. ^ "Avalonia UI - Cross-Platform UI Framework for .NET". Avalonia UI. Retrieved 2024-05-16.
33. ^ "Avalonia UI - Showcase". avaloniaui.net. Retrieved 2024-05-23.
34. ^ jwmsft (2022-10-20). "XAML platform - UWP applications". learn.microsoft.com. Retrieved 2024-05-23.
35. ^ davidbritch (2023-07-25). "XAML - .NET MAUI". learn.microsoft.com. Retrieved 2024-05-23.
36. ^ Retrieved from http://www.microsoft.com/en-au/download/details.aspx?id=23072.

## Bibliography[edit]

* 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

## External links[edit]

* Free and open-source software portal

* MSDN Library: Windows Presentation Foundation
* Rich typography with Windows Presentation Foundation
* Windows Presentation Foundation User Education

* v
* t
* e

.NET

* .NET strategy
* Libraries and frameworks

Implementations|

* .NET (Core)
* .NET Framework
* Version history
* .NET Compact Framework
* .NET Micro Framework
* DotGNU
* Mono
* XNA Framework

Architecture|

* Common Language Runtime (CLR)
* COM Interop
* Framework Class Library (FCL)

Components|

* ADO.NET
* Entity Framework
* ASP.NET
* Web Forms
* AJAX
* Core
* Dynamic Data
* MVC
* Razor
* Avalonia
* ClickOnce
* Dynamic Language Runtime
* Extensible Application Markup Language (XAML)
* Language Integrated Query (LINQ)
* Managed Extensibility Framework
* Microsoft Silverlight
* Microsoft XNA
* Parallel Extensions
* Windows Communication Foundation (WCF)
* WCF Data Services
* Windows Forms (WinForms)
* Windows Identity Foundation (WIF)
* Windows Presentation Foundation (WPF)
* Windows Workflow Foundation (WF)
* .NET Remoting

Tools|

| Obfuscators|

* Dotfuscator
* SmartAssembly

|

Decompilers|

* .NET Reflector
* dotPeek

Misc|

* CLR Profiler
* ILAsm
* .NET Compiler Platform
* Native Image Generator (NGen)
* XAMLPad

IDEs|

* Visual Studio
* Blend
* Express
* MonoDevelop
* SharpDevelop
* Xamarin Studio

Organizations|

* .NET Foundation
* Microsoft
* Xamarin

* Category
* List
* Commons

* v
* t
* e

Microsoft APIs and frameworks

Graphics and UI|

* Desktop Window Manager
* Direct2D
* Direct3D
* D3D (extensions)
* GDI / GDI+
* WPF
* Silverlight
* WinUI
* Windows Color System
* Windows Image Acquisition
* Windows Imaging Component
* DirectX Graphics Infrastructure (DXGI)
* Windows Advanced Rasterization Platform
* WinG

Audio|

* DirectMusic
* DirectSound
* DirectX plugin
* XACT
* Speech API
* XAudio2

Multimedia|

* DirectX
* Media Objects
* Video Acceleration
* Xinput
* DirectInput
* DirectShow
* Image Mastering API
* Managed DirectX
* Media Foundation
* XNA
* Windows Media
* Video for Windows

Web|

* MSHTML
* RSS Platform
* JScript
* VBScript
* BHO
* XDR
* SideBar Gadgets
* TypeScript

Data access|

* Data Access Components (MDAC)
* ADO
* ADO.NET
* ODBC
* OLE DB
* Extensible Storage Engine
* Entity Framework
* Sync Framework
* Access Database Engine
* MSXML
* OPC

Networking|

* Winsock
* LSP
* Winsock Kernel
* Filtering Platform
* NDIS
* Windows Rally
* BITS
* P2P API
* MSMQ
* MS MPI
* DirectPlay

Communication|

* Messaging API
* Telephony API
* WCF

Administration and
management|

* Win32 console
* Windows Script Host
* WMI (extensions)
* PowerShell
* Task Scheduler
* Offline Files
* Shadow Copy
* Windows Installer
* Error Reporting
* Event Log
* Common Log File System

Component model|

* COM
* COM+
* ActiveX
* Distributed Component Object Model
* .NET Framework

Libraries|

* Framework Class Library
* Microsoft Foundation Classes (MFC)
* Active Template Library (ATL)
* Windows Template Library (WTL)

Device drivers|

* WDM
* WDF
* KMDF
* UMDF
* WDDM
* NDIS
* UAA
* BDA
* VxD

Security|

* Crypto API
* CAPICOM
* Windows CardSpace
* Data Protection API
* Security Support Provider Interface (SSPI)

.NET|

* ASP.NET
* ADO.NET
* Remoting
* Silverlight
* TPL
* WCF
* WCS
* WPF
* WF

Software factories|

* EFx Factory
* Enterprise Library
* Composite UI
* CCF
* CSF

IPC|

* MSRPC
* Dynamic Data Exchange (DDE)
* Remoting
* WCF

Accessibility|

* Active Accessibility
* UI Automation

Text and multilingual
support|

* DirectWrite
* Text Services Framework
* Text Object Model
* Input method editor
* Language Interface Pack
* Multilingual User Interface
* Uniscribe

* v
* t
* e

Microsoft free and open-source software (FOSS)

Overview|

* Microsoft and open source
* Shared Source Initiative

Software|

| Applications|

* 3D Movie Maker
* Atom
* Conference XP
* Family.Show
* File Manager
* Open Live Writer
* Microsoft PowerToys
* Terminal
* Windows Calculator
* Windows Console
* Windows Package Manager
* WorldWide Telescope
* XML Notepad

|

Video games|

* Allegiance

Programming
languages|

* Bosque
* C#
* Dafny
* F#
* F*
* GW-BASIC
* IronPython
* IronRuby
* Lean
* P
* Power Fx
* PowerShell
* Project Verona
* Q#
* Small Basic Online
* TypeScript
* Visual Basic

Frameworks,
development tools|

* .NET
* .NET Framework
* .NET Gadgeteer
* .NET MAUI
* .NET Micro Framework
* AirSim
* ASP.NET
* ASP.NET AJAX
* ASP.NET Core
* ASP.NET MVC
* ASP.NET Razor
* ASP.NET Web Forms
* Avalonia
* Babylon.js
* BitFunnel
* Blazor
* C++/WinRT
* CCF
* ChakraCore
* CLR Profiler
* Dapr
* DeepSpeed
* DiskSpd
* Dryad
* Dynamic Language Runtime
* eBPF on Windows
* Electron
* Entity Framework
* Fluent Design System
* Fluid Framework
* Infer.NET
* LightGBM
* Managed Extensibility Framework
* Microsoft Automatic Graph Layout
* Microsoft C++ Standard Library
* Microsoft Cognitive Toolkit
* Microsoft Design Language
* Microsoft Detours
* Microsoft Enterprise Library
* Microsoft SEAL
* mimalloc
* Mixed Reality Toolkit
* ML.NET
* mod_mono
* Mono
* MonoDevelop
* MSBuild
* MsQuic
* Neural Network Intelligence
* npm
* NuGet
* OneFuzz
* Open Management Infrastructure
* Open Neural Network Exchange
* Open Service Mesh
* Open XML SDK
* Orleans
* Playwright
* ProcDump
* ProcMon
* Python Tools for Visual Studio
* R Tools for Visual Studio
* RecursiveExtractor
* Roslyn
* Sandcastle
* SignalR
* StyleCop
* SVNBridge
* T2 Temporal Prover
* Text Template Transformation Toolkit
* TLA+ Toolbox
* U-Prove
* vcpkg
* Virtual File System for Git
* Visual Studio Code
* Voldemort
* VoTT
* Vowpal Wabbit
* Windows App SDK
* Windows Communication Foundation
* Windows Driver Frameworks
* KMDF
* UMDF
* Windows Forms
* Windows Presentation Foundation
* Windows Template Library
* Windows UI Library
* WinJS
* WinObjC
* WiX
* XDP for Windows
* XSP
* xUnit.net
* Z3 Theorem Prover

Operating systems|

* MS-DOS (v1.25, v2.0 & v4.0)
* Barrelfish
* SONiC
* Azure Linux

Other|

* ChronoZoom
* Extensible Storage Engine
* FlexWiki
* FourQ
* Gollum
* Project Mu
* ReactiveX
* SILK
* TLAPS
* TPM 2.0 Reference Implementation
* WikiBhasha

Licenses|

* Microsoft Public License
* Microsoft Reciprocal License

Forges|

* CodePlex
* GitHub

Related|

* .NET Foundation
* F# Software Foundation
* Microsoft Open Specification Promise
* Open Letter to Hobbyists
* Open Source Security Foundation
* Outercurve Foundation

Category

* v
* t
* e

List of widget toolkits

Low-level

On AmigaOS|

* Intuition

On Classic Mac OS, macOS|

* Macintosh Toolbox
* Carbon

On Windows|

* Windows API
* UWP
* WinRT

On Unix,
under X11|

* Xlib
* XCB
* X Toolkit Intrinsics

On BeOS, Haiku|

* BeOS API

Cross-platform|

| CLI|

* OpenTK

|

* GDK
* Simple DirectMedia Layer

Java|

* JOGL
* LWJGL

On Android|

| CLI|

* Xamarin.Android

|

High-level, platform-specific

On AmigaOS|

* BOOPSI
* MUI
* ReAction GUI
* Zune

On Classic Mac OS, macOS|

| Object Pascal|

* MacApp

|

Objective-C, Swift|

* Cocoa
* Cocoa Touch

C++|

* MacApp
* PowerPlant
* THINK C

CLI|

* Xamarin.Mac
* Xamarin.iOS

On Windows|

| CLI|

* Windows Forms
* XAML
* Windows Presentation Foundation
* Windows UI Library
* Silverlight
* Microsoft XNA

|

C++|

* MFC
* Active Template Library
* Windows Template Library
* Object Windows Library

Object Pascal|

* Visual Component Library

On Unix,
under X11|

* Athena (Xaw)
* LessTif
* Motif
* OLIT
* XForms

On Android|

* Qt for Android

High-level, cross-platform

* Enlightenment Foundation Libraries
* GTK
* IUP
* XForms
* XVT

C++|

* Bedrock
* CEGUI
* Component Library for Cross Platform
* FLTK
* FOX toolkit
* OpenGL User Interface Library
* gtkmm
* JUCE
* Qt
* Rogue Wave Views
* TnFOX
* U++
* Wt
* wxWidgets
* Simple and Fast Multimedia Library

Objective-C|

* GNUstep

CLI|

* Gtk#
* Tao Framework
* OpenTK
* UIML
* MonoGame
* Moonlight
* Xamarin.Forms
* XWT[1][2]
* .NET MAUI

Adobe Flash|

* Apache Flex
* MXML

Go|

* Fyne

Haskell|

* wxHaskell

Java|

* Abstract Window Toolkit
* FXML
* JavaFX
* Qt Jambi
* Swing
* Standard Widget Toolkit
* Google Web Toolkit
* Lightweight User Interface Toolkit

JavaScript|

* Dojo Toolkit
* Echo
* Ext JS
* Google Closure Tools
* jQuery UI
* OpenUI5
* Qooxdoo
* YUI

Common Lisp|

* CAPI
* CLIM
* Common Graphics

Lua|

* IUP

Pascal|

* Lazarus Component Library

Object Pascal|

* Component Library for Cross Platform
* fpGUI
* IP Pascal
* FireMonkey

Perl|

* Perl/Tk
* wxPerl

PHP|

* PHP-GTK
* wxPHP

Python|

* Tkinter
* Kivy
* PySide
* PyQt
* PyGTK
* wxPython
* Pyjs

Ruby|

* Shoes
* QtRuby

Tcl|

* Tcl/Tk

XML|

* GladeXML
* Lively Kernel
* Extensible Application Markup Language
* XUL
* Wt

shell|

* Newt
* CDK
* Dialog

Dart|

* Flutter

Authority control databases: National |

* Czech Republic

|

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template