Windows Presentation Foundation

Windows Presentation Foundation (WPF) is a graphical subsystem by Microsoft for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0 in 2006. WPF uses DirectX and attempts to provide a consistent programming model for building applications. It separates the user interface from business logic, and resembles similar XML-oriented object models, such as those implemented in XUL and SVG.

WPF employs XAML, an XML-based language, to define and link various interface elements.[1] WPF applications can be deployed as standalone desktop programs or hosted as an embedded object in a website. 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.

WPF runtime libraries are included with all versions of Microsoft Windows since Windows Vista and Windows Server 2008. Users of Windows XP SP2/SP3 and Windows Server 2003 can optionally install the necessary libraries.[2][3]

Microsoft Silverlight provided functionality that is mostly a subset of WPF to provide embedded web controls comparable to Adobe Flash. 3D runtime rendering had been supported in Silverlight since Silverlight 5.[4]

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 Core framework, however, the system is not cross-platform and is still available only on Windows.[5][6]

DotNet3.0
This subsystem is a part of .NET Framework 3.0.

Features

Direct3D

Graphics, including desktop items like windows, are rendered using Direct3D. This allows the display of more complex graphics and custom themes, at the cost of GDI's wider range of support and uniform control theming. It allows Windows to offload some graphics tasks to the GPU. This reduces the workload on the computer's CPU. GPUs are optimized for parallel pixel computations. This tends to speed up screen refreshes at the cost of decreased compatibility in markets where GPUs are not necessarily as powerful, such as the netbook market.

The Windows Presentation Foundation (WPF) is Microsoft's UI framework to create applications with a rich user experience. It is part of the .NET framework 3.0 and higher. WPF's emphasis on vector graphics allows most controls and elements to be scaled without loss in quality or pixelization, thus increasing accessibility. With the exception of Silverlight, Direct3D integration allows for streamlined 3D rendering. In addition, interactive 2D content can be overlaid on 3D surfaces natively.[7][8]

Data binding

  • WPF has a built-in set of data services to enable application developers to bind and manipulate data within applications. It supports four types of data binding:
    1. one time: where the client ignores updates on the server.
    2. one way: where the client has read-only access to data.
    3. two way: where client can read from and write data to the server
    4. one way to source: where the client has write-only access to data
  • LINQ queries, including LINQ to XML, can also act as data sources for data binding.[8]
  • Binding of data has no bearing on its presentation. WPF provides data templates to control presentation of data.
  • A set of built-in controls is provided as part of WPF, containing items such as button, menu, grids, and list box.
  • Dependency Properties can be added to Behaviours or Attached Properties to add custom binding properties.
  • A powerful concept in the WPF is the logical separation of a control from its appearance.
    • A control's template can be overridden to completely change its visual appearance.
    • A control can contain any other control or layout, allowing for a high degree of control over composition.
  • Features retained mode graphics. Repainting the display isn't always necessary.

Media services

  • The WPF provides an integrated system for building user interfaces with common media elements like vector and raster images, audio, and video. WPF also provides an animation system and a 2D/3D rendering system.[9]
  • WPF provides shape primitives for 2D graphics along with a built-in set of brushes, pens, geometries, and transforms.
  • The 3D capabilities in WPF are a subset of the full-feature set provided by Direct3D. However, WPF provides tighter integration with other features like user interfaces, documents, and media. This makes it possible to have 3D user interfaces, 3D documents, or 3D media.
  • There is support for most common image formats: BMP, JPEG, PNG, TIFF, Windows Media Photo, GIF, and ICON.
  • WPF supports the video formats WMV, MPEG and some AVI files by default, but since it has Windows Media Player running beneath, WPF can use all the codecs installed for it.

Templates

  • In WPF you can define the look of an element directly, via its properties, or indirectly with a template or style. At its simplest a style is a combination of property settings that can be applied to a UI element with a single property attribute. Templates are a mechanism for defining alternative UI for portions of your WPF application. There are several template types available in WPF (ControlTemplate, DataTemplate, HierarchicalDataTemplate, and ItemsPanelTemplate).

Control templates

  • Underlying all UI controls in WPF is a new composition model. Every control is composed of one or more ‘visuals’. These visual sub-elements are turned into a hierarchical visual tree by WPF and eventually rendered by the GPU. Because WPF controls are not wrappers for standard Windows controls their UI can be radically changed without affecting the normal behavior of the control.
  • Every control in WPF has a default ‘template’ that defines its visual tree. The default template is created by the control author and is replaceable by other developers and designers. The substitute UI is placed within a ControlTemplate.

Data templates

  • WPF has a flexible data binding system. UI elements can be populated and synchronized with data from an underlying data model. Rather than showing simple text for the bound data, WPF can apply a data template (replaceable UI for .NET types) before rendering to the visual tree.

Animations

  • WPF supports time-based animations, in contrast to the frame-based approach. This decouples the speed of the animation from how the system is performing.
  • WPF supports low level animation via timers and higher level abstractions of animations via the Animation classes.
    • Any WPF element property can be animated as long as it is registered as a dependency property.
    • 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.
  • Animations can be grouped into Storyboards.
    • Storyboards are the primary way to start, stop, pause and otherwise manipulate the animations.
  • Animations can be triggered by external events, including user action.[10]
  • Scene redraws are time triggered.[10]
  • Presentation timers are initialized and managed by WPF.[10]
  • Animation effects can be defined on a per-object basis, which can be accessed directly from XAML markup.[10]

Imaging

  • WPF can natively access Windows Imaging Component (WIC) code and APIs allowing developers to write image codecs for their specific image file formats.

Effects

  • WPF 3.0 provides for Bitmap effects (BitmapEffect class), which are raster effects applied to a Visual. These raster effects are written in unmanaged code and force rendering of the Visual to be performed on the CPU and not hardware accelerated by the GPU. BitmapEffects were deprecated in .NET 3.5 SP 1.
  • .NET Framework 3.5 SP1 adds the Effect class, which is a Pixel-Shader 2.0 effect that can be applied to a visual, which allows all rendering to remain on the GPU.
  • The Effect class is extensible, allowing applications to specify their own shader effects.
  • The Effect class, in .NET 3.5 SP1 and 4.0, ships with two built-in effects, BlurEffect and DropShadowEffect. There are no direct replacements for OuterGlowBitmapEffect, EmbossBitmapEffect and BevelBitmapEffect, previously provided by the deprecated BitmapEffect class. However, there are other ways of achieving the same results with the Effect class. For example, developers can get an outer glow effect by using the DropShadowEffect with its ShadowDepth set to 0.
  • Although the BitmapEffect class was marked as deprecated in .Net Framework 3.5 SP1, its use was still allowed and these effects would still render correctly. In .Net Framework 4.0 the BitmapEffect class was effectively deprecated - code referencing BitmapEffect still builds without errors, but no effect gets actually rendered.

Documents

  • 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.
  • Natively supports XML Paper Specification documents.
  • Supports reading and writing paginated documents using Open Packaging Convention.

Text

  • WPF includes a number of text rendering features that were not available in GDI. This is the first Windows programming interface to expose OpenType features to software developers, supporting OpenType, TrueType, and OpenType CFF (Compact Font Format) fonts.
  • Support for OpenType typographic features includes:
  • 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.[11] 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.[12] ClearType cannot be turned off in older WPF 3.x applications.[13] Unlike the ClearType in GDI or GDI+, WPF ClearType does not snap glyphs to pixels horizontally, leading to a loss of contrast disliked by some users.[14] The text rendering engine has been rewritten in WPF 4.0, correcting this issue.[15]
  • The extent to which glyphs are cached is dependent on the video card. DirectX 10 cards are able to cache the font glyphs in video memory, then perform the composition (assembling of character glyphs in the correct order, with the correct spacing), alpha-blending (application of anti-aliasing), and RGB blending (ClearType's sub-pixel color calculations), entirely in hardware. This means that only the original glyphs need to be stored in video memory once per font (Microsoft estimates that this would require 2 MB of video memory per font), and other operations such as the display of anti-aliased text on top of other graphics—including video—can also be done with no computation effort on the part of the CPU. DirectX 9 cards are only able to cache the alpha-blended glyphs in memory, thus requiring the CPU to handle glyph composition and alpha-blending before passing this to the video card. Caching these partially rendered glyphs requires significantly more memory (Microsoft estimates 5 MB per process). Cards that don't support DirectX 9 have no hardware-accelerated text rendering capabilities.

Interoperability

  • Windows Forms is also 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:

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

Alternative input

  • WPF supports digital ink-related functionality.
  • WPF 4.0 supports multi-touch input on Windows 7 and above.

Accessibility

  • WPF supports Microsoft UI Automation to allow developers to create accessible interfaces.
  • This API also allows automated test scripts to interact with the UI.[16]

XAML

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.

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.

Architecture

WPF
The WPF architecture. Blue elements are Windows components; brown ones are WPF components.

The architecture of WPF spans both managed code and native code components. However, the public API exposed is only available via managed code. While the majority of WPF is in managed code, the composition engine which renders the WPF applications is a native component. It is named Media Integration Layer (MIL) and resides in milcore.dll. It interfaces directly with DirectX and provides basic support for 2D and 3D surfaces, timer-controlled manipulation of contents of a surface with a view to exposing animation constructs at a higher level, and compositing the individual elements of a WPF application into a final 3D "scene" that represents the UI of the application and renders it to the screen.[17][18] The Desktop Window Manager also uses the MIL for desktop and window composition.[19] The media codecs are also implemented in unmanaged code, and are shipped as windowscodecs.dll.[17] In the managed world, PresentationCore (presentationcore.dll) provides a managed wrapper for MIL and implements the core services for WPF,[17] including a property system that is aware of the dependencies between the setters and consumers of the property, a message dispatching system by means of a Dispatcher object to implement a specialized event system and services which can implement a layout system such as measurement for UI elements.[18] PresentationFramework (presentationframework.dll) implements the end-user presentational features, including layouts, time-dependent, story-board based animations, and data binding.[18]

WPF exposes a property system for objects which inherit from DependencyObject, that is aware of the dependencies between the consumers of the property, and can trigger actions based on changes in properties. Properties can be either hard coded values or expressions, which are specific expressions that evaluate to a result. In the initial release, however, the set of expressions supported is closed.[18] The value of the properties can be inherited from parent objects as well. WPF properties support change notifications, which invoke bound behaviors whenever some property of some element is changed. Custom behaviors can be used to propagate a property change notification across a set of WPF objects. This is used by the layout system to trigger a recalculation of the layout on property-changes, thus exposing a declarative programming style for WPF, whereby almost everything, from setting colors and positions to animating elements can be achieved by setting properties.[18] This allows WPF applications to be written in XAML, which is a declarative mark-up language, by binding the keywords and attributes directly to WPF classes and properties.

The interface elements of a WPF application are maintained as a class of Visual objects. Visual objects provide a managed interface to a composition tree which is maintained by Media Integration Layer (MIL). Each element of WPF creates and adds one or more composition nodes to the tree. The composition nodes contain rendering instructions, such as clipping and transformation instructions, along with other visual attributes. Thus the entire application is represented as a collection of composition nodes, which are stored in a buffer in the system memory. Periodically, MIL walks the tree and executes the rendering instructions in each node, thus compositing each element on to a DirectX surface, which is then rendered on screen. MIL uses the painter's algorithm, where all the components are rendered from back of the screen to the front, which allows complex effects like transparencies to be easily achieved. This rendering process is hardware accelerated using the GPU.[18] The composition tree is cached by MIL, creating a retained mode graphics, so that any changes to the composition tree needs only to be incrementally communicated to MIL. This also frees the applications of managing repainting the screen; MIL can do that itself as it has all the information necessary. Animations can be implemented as time-triggered changes to the composition tree. On the user visible side, animations are specified declaratively, by setting some animation effect to some element via a property and specifying the duration. The code-behind updates the specific nodes of the tree, via Visual objects, to represent both the intermediate states at specified time intervals as well as the final state of the element. MIL will render the changes to the element automatically.

All WPF applications start with two threads: one for managing the UI and another background thread for handling rendering and repainting.[20] Rendering and repainting is managed by WPF itself, without any developer intervention. The UI thread houses the Dispatcher (via an instance of DispatcherObject), which maintains a queue of UI operations that need to be performed (as a tree of Visual objects), sorted by priority. UI events, including changing a property that affects the layout, and user interaction events raised are queued up in the dispatcher, which invokes the handlers for the events. Microsoft recommends that the event handlers only update the properties to reflect new content for application responsiveness, with the new content being generated or retrieved in a background thread.[20] The render thread picks up a copy of the visual tree and walks the tree calculating which components will be visible and renders them to Direct3D surfaces. The render thread also caches the visual tree, so only changes to the tree need to be communicated, which will result in updating just the changed pixels. WPF supports an extensible layout model. Layout is divided into two phases: Measure; and Arrange. The Measure phase recursively calls all elements and determines the size they will take. In the Arrange phase, the child elements are recursively arranged by their parents, invoking the layout algorithm of the layout module in use.[18][21]

Tools

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

Microsoft tools

  • 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.[22]
  • Microsoft Visual Studio Express 2008 and later editions, particularly Visual C# Express and Visual Basic Express, also have the WPF designer integrated.
  • 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.
  • XAMLPad is a lightweight tool included in the .NET Framework SDK. It can create and render XAML files using a split screen UI layout. It also provides a tree view of the markup in a panel.

Third-party tools

  • SharpDevelop, an open-source .NET IDE, includes WPF application design abilities. It is a free alternative to Visual Studio.[23]
  • PowerBuilder .NET by Sybase is a 4GL tool that translates PowerBuilder code, graphical objects to XAML and allows deploying the application as a WPF target.[24]

Deployment

WPF's deployment model offers both standalone and XAML Browser Applications (XBAP, pronounced "ex-bap") flavors. The programming model for building either type of application is similar.

Standalone applications are those that have been locally installed on the computer using software such as ClickOnce or Windows Installer (MSI) and which run on the desktop. Standalone applications are considered full trust and have full access to a computer's resources.

XAML Browser Applications (XBAPs) are programs that are hosted inside a web browser. Pre-.NET4 XBAP applications run in a partial trust sandbox environment, and are not given full access to the computer's resources and not all WPF functionality is available. The hosted environment is intended to protect the computer from malicious applications. XBAPs can run as fully trusted applications in .NET 4, with full access to computer resources. Starting an XBAP from an HTML page or vice versa is seamless (there is no security or installation prompt). Although one gets the perception of the application running in the browser, it actually runs in an out-of-process executable different from the browser.

Internet Explorer

As of the release of .NET Framework 3.0, XBAPs would only run in IE.

Firefox support

With the release of .NET Framework 3.5 SP1, XBAP also runs in Mozilla Firefox using the included extension. On October 16, 2009, Mozilla added the Firefox plugin and extension to its add-ons blocklist, because of a remotely exploitable serious security vulnerability, in agreement with Microsoft.[25] Two days later, the block was removed. On Windows 7, the Firefox plugin does not run by default.[26] A reinstallation of the .NET Framework 3.5 SP1 will install the plugin and add support for XBAP applications on Firefox.[27] Alternatively, hard-copying the plugin DLLs from a working Windows XP/Vista installation to the plugin directory of Mozilla Firefox will also reinstate support for XBAP applications.[27] The WPF plugin DLLs reside in the following directories (depending on the Framework version):

3.5 [SP1]
C:\Windows\Microsoft.NET\Framework\v3.5\WPF\NPWPF.dll
4.0
C:\Windows\Microsoft.NET\Framework\WPF\NPWPF.dll

Microsoft Silverlight

Silverlight (codenamed WPF/E) is a deprecated cross-browser browser plugin which contained WPF-based technology (including XAML)[28] that provided features such as video, vector graphics, and animations to multiple operating systems including Windows 7, Windows Vista, Windows XP, and Mac OS X. Microsoft sanctioned a limited number of 3rd party developers to work on ports for certain Linux distributions.[29] Specifically, it was provided as an add-on for Mozilla Firefox, Internet Explorer 6 and above, Google Chrome 42 and below and Apple Safari.

.NET Micro Framework

The .NET Micro Framework includes a GUI object model loosely based on WPF, although without support for XAML.

References

  1. ^ dotnet-bot. "XAML Overview (WPF)". msdn.microsoft.com. Retrieved 31 March 2018.
  2. ^ ".NET". Microsoft. Retrieved 31 March 2018.
  3. ^ "Microsoft .NET Framework 3.0 Download". microsoft.com. Retrieved 31 March 2018.
  4. ^ Silverlight Learning Resources. Silverlight.net. Retrieved on 2013-08-29.
  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. ^ "Introducing Windows Presentation Foundation". msdn.microsoft.com. Retrieved 31 March 2018.
  8. ^ a b "What's New in WPF 3.5? Here's Fifteen Cool Features..." Retrieved 2007-10-14.
  9. ^ Graphics and Multimedia. Msdn.microsoft.com. Retrieved on 2013-08-29.
  10. ^ a b c d "Animation overview". MSDN. Retrieved 2007-10-14.
  11. ^ "Typography in Windows Presentation Foundation". msdn.microsoft.com. Retrieved 31 March 2018.
  12. ^ dotnet-bot. "ClearType Overview". msdn.microsoft.com. Retrieved 31 March 2018.
  13. ^ "Disable Antialiasing". social.msdn.microsoft.com. Retrieved 31 March 2018.
  14. ^ "My first thoughts on WPF with VS 2008 RTM and a few questions". social.msdn.microsoft.com. Retrieved 31 March 2018.
  15. ^ WPF 4 (VS 2010 and .NET 4.0 Series) - ScottGu's Blog. Weblogs.asp.net. Retrieved on 2013-08-29.
  16. ^ Xansky. "UI Automation Overview". msdn.microsoft.com. Retrieved 31 March 2018.
  17. ^ a b c Chris Anderson. "MIL information". Retrieved 2007-10-14.
  18. ^ a b c d e f g "WPF Architecture". MSDN. Retrieved 2007-10-14.
  19. ^ Schechter, Greg (June 9, 2006). "How underlying WPF concepts and technology are being used in the DWM". MSDN Blogs. Microsoft. Retrieved 2015-07-27.
  20. ^ a b "Threading Model". MSDN. Retrieved 2007-10-14.
  21. ^ "The Layout System". MSDN. Retrieved 2007-10-14.
  22. ^ Retrieved from http://www.microsoft.com/en-au/download/details.aspx?id=23072.
  23. ^ christophw@icsharpcode.net, Christoph Wille -. "SharpDevelop @ic#code". icsharpcode.net. Retrieved 31 March 2018.
  24. ^ Rich Application Development Tool/Declarative Programming Environment | PowerBuilder - Sybase Inc. Sybase.com. Retrieved on 2013-08-29.
  25. ^ "NET Framework Assistant Blocked to Disarm Security Vulnerability". Retrieved 2009-10-17.
  26. ^ "Firefox Add-ons to Support .NET Application Deployment". Retrieved 2010-09-07.
  27. ^ a b "Xbap plugin for firefox in Windows 7". Retrieved 2010-09-29.
  28. ^ "The Official Microsoft ASP.NET Site". The Official Microsoft ASP.NET Site. Retrieved 31 March 2018.
  29. ^ "Silverlight 1.0 Released and Silverlight for Linux Announced". Retrieved 2007-09-05.

Bibliography

  • 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

Accelerator (software)

The Accelerator is a collection of development solutions for IBM i and Windows platforms using .NET Framework, and/or LANSA, technologies provided by Surround Technologies. The Accelerator development architecture is a tool for building Windows and Web apps within a structured framework.The intent of the Accelerator solutions is to provide a rapid application development (RAD) environment, that produces well-designed n-tier code that can run in a client/server, web or mobile deployment. The use of Microsoft’s .NET Framework, is recommended by Surround for zero-lock in development and optimal deployment flexibility including both Windows Presentation Foundation (WPF) and responsive web (and mobile) design (ASP.NET MVC / Bootstrap) clients.The Accelerator uses customizable templates, standards and naming conventions to generate code. The generated code is human readable, and standardized to minimize testing, debugging, customization, and future maintenance efforts. The generated code follows object-oriented programming design principles, the inversion of control (IoC) pattern, observer pattern, model–view–viewmodel (MVVM, with OO techniques to avoid redundancy, promote ease of testing and maintenance). Supports ASP.NET MVC3 Framework. Other patterns followed by the architecture, or are adapted depending on the case; flexibility promoted by the typical use of abstraction patterns when practical. Abstraction is promoted though the use of Windows Presentation Foundation and Windows Communication Foundation.

ClearType

ClearType is Microsoft's implementation of subpixel rendering technology in rendering text in a font system. ClearType attempts to improve the appearance of text on certain types of computer display screens by sacrificing color fidelity for additional intensity variation. This trade-off is asserted to work well on LCD flat panel monitors.

ClearType was first announced at the November 1998 COMDEX exhibition. The technology was first introduced in software in January 2000 as an always-on feature of Microsoft Reader, which was released to the public in August 2000.

ClearType was significantly changed with the introduction of DirectWrite in Windows 7.Word 2013 stopped using ClearType, because "There is a problem with ClearType: it depends critically on the color of the background pixels."

ClickOnce

ClickOnce is a component of Microsoft .NET Framework 2.0 and later, and supports deploying applications made with Windows Forms or Windows Presentation Foundation. It is similar to Java Web Start for the Java Platform or Zero Install for Linux.

Extensible Application Markup Language

Extensible Application Markup Language (XAML (listen)) is a declarative XML-based language developed by Microsoft that is used for initializing structured values and objects. It is available under Microsoft's Open Specification Promise. The acronym originally stood for Extensible Avalon Markup Language, Avalon being the code-name for Windows Presentation Foundation (WPF).XAML is used extensively in .NET Framework 3.0 & .NET Framework 4.0 technologies, particularly Windows Presentation Foundation (WPF), Silverlight, Windows Workflow Foundation (WF), Windows Runtime XAML Framework and Windows Store apps. In WPF, XAML forms a user interface markup language to define UI elements, data binding, events, and other features. In WF, workflows can be defined using XAML. XAML can also be used in Silverlight applications, Windows Phone apps and Windows Store apps.

XAML elements map directly to Common Language Runtime object instances, while XAML attributes map to Common Language Runtime properties and events on those objects. XAML files can be created and edited with visual design tools like Microsoft Expression Blend, Microsoft Visual Studio, and the hostable Windows Workflow Foundation visual designer. They can also be created and edited with a standard text editor, a code editor like XAMLPad, or a graphical editor like Vector Architect.

Anything that is created or implemented in XAML can be expressed using a more traditional .NET language, such as C# or Visual Basic .NET. However, a key aspect of the technology is the reduced complexity needed for tools to process XAML, because it is based on XML. Consequently, a variety of products are emerging, particularly in the WPF space, which create XAML-based applications. As XAML is simply based on XML, developers and designers are able to share and edit content freely amongst themselves without requiring compilation. XAML also benefits from being a declarative definition of the UI rather than procedural code to generate it.

Family.Show

Family.Show is a free genealogy program, created as a reference sample for Microsoft's Windows Presentation Foundation.

Graphical user interface builder

A graphical user interface builder (or GUI builder), also known as GUI designer, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements (often called widgets) using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in source-code, with no visual feedback until the program is run.

User interfaces are commonly programmed using an event-driven architecture, so GUI builders also simplify creating event-driven code. This supporting code connects widgets with the outgoing and incoming events that trigger the functions providing the application logic.

Some graphical user interface builders, such as e.g. Glade Interface Designer, automatically generate all the source code for a graphical control element. Others, like Interface Builder, generate serialized object instances that are then loaded by the application.

Infragistics

Infragistics is a global software company, founded in 1989, that publishes user interface (UI) development tools and components for a range of developer applications, across all platforms. The company is also a provider of developer support, testing tools, and UI and User Experience (UX) training and consulting services.Their products enable developers to create UIs that are the foundation for developing applications with data visualization in line of business applications for platforms that include —Windows Forms, Windows Presentation Foundation (WPF), ASP.NET and Silverlight as well as jQuery/HTML5, and mobile controls for the Windows Phone, iOS (iPhone and iPad) and Android.

Infragistics branched into the application prototyping industry with Indigo Studio, which is aimed at injecting simple design principles into the software development process. Additionally, in 2012 Infragistics acquired mobile app development company, Southlabs and continues to develop their Enterprise Mobility products, SharePlus (a mobile sharepoint client) and ReportPlus (a mobile dashboarding application).

The company, based in Cranbury, NJ, was established in November 2000 when ProtoView Development Corporation and Sheridan Software Systems, Inc. merged. Besides its U.S. headquarters in New Jersey, Infragistics has offices in eight other countries including the UK, Germany, Australia, France, Japan, India, Bulgaria and Uruguay.

Live Connect

Live Connect (previously Messenger Connect, Live Services and Windows Live Dev) is a collection of APIs and common controls that allow developers to have a deeper control and offers access to the core Windows Live services and data through open and easily accessible application programming interfaces (APIs). At MIX07, Microsoft's Senior Architect Danny Thorpe described:

Live Connect is built on standard web technologies such as OAuth 2.0, Representational State Transfer (REST), and JavaScript Object Notation (JSON), and is designed to work with any technology or device including ASP.NET, Microsoft Silverlight (in-browser and out-of-browser models), Windows Presentation Foundation (WPF), Adobe Flash, PHP, and Java.Live Connect was released on June 24, 2010 as part of Windows Live's "Wave 4" release (known then as Messenger Connect), and unites previously separate APIs of Windows Live (Windows Live ID, Windows Live Contacts, Windows Live Messenger Web Toolkit, and others) into a single API that is based on industry standards and specifications. On September 13, 2011, Messenger Connect was renamed to Live Connect and brings additional APIs for OneDrive and Outlook contacts and calendars as well as adding XMPP support for the Messenger service.

Magnifier (Windows)

Magnifier, formerly Microsoft Magnifier, is a screen magnifier app intended for visually impaired people to use when running Microsoft Windows. When it is running, it creates a bar at the top of the screen that greatly magnifies where the mouse is. Magnifier was first included as a sample in the Active Accessibility SDK/RDK for Windows 95 and later made a standard Windows utility starting with Windows 98. Prior to Windows Vista, Magnifier could be used to magnify the screen up to 9 times its normal size. Windows Vista and later allow up to 16× magnification.

In Windows Vista, Magnifier uses WPF, which in turn uses vector images to render the content. As a result, the rendered magnified image is sharp and not pixelated. However, this is useful only for Windows Presentation Foundation applications. Non-WPF applications are still magnified the traditional way. Also, due to a change introduced in WPF 3.5 SP1, this functionality is lost if .NET Framework 3.5 SP1 is installed.Microsoft has also released a Magnification API to allow assistive technology applications to use the Magnifier engine.Microsoft's Windows 7 operating system includes a significantly improved version of Magnifier. It features full-screen magnification which allows a user to pan around the screen at up to 16× magnification.

However, the full screen feature has also been criticized due to its incompatibility with the high contrast color schemes found in the Windows 7 beta release. This issue remains in the final Windows 7 release. Besides this, when the magnifier zooms, the text will appear blurry or pixelated because it is not being directly rendered at the larger size; instead, the smaller sized rendering is being enlarged as a raster image. ClearType sub-pixel anti-aliasing is also magnified as a result of this, so if ClearType is active, the magnified text may appear to have unexpected colors at the edges of non-horizontal lines. Some third party magnification software compensates for this effect by applying scaling filters to the enlarged image.

The magnifier also features a lens mode similar to that found in the existing version of the software. Lens mode is improved, however, as now the magnifying window will follow the cursor around the screen rather than remain in a fixed position. Finally the magnifier is much easier to access by using the Windows key and +/- to control the zoom level without the need to start the application first. Pressing the Win+Esc combination will exit the magnifier.

Microsoft Blend

Microsoft Blend for Visual Studio (formerly Microsoft Expression Blend) is a user interface design tool developed and sold by Microsoft for creating graphical interfaces for web and desktop applications that blend the features of these two types of applications. It is an interactive, WYSIWYG front-end for designing XAML-based interfaces for Windows Presentation Foundation, Silverlight and UWP applications. It was one of the applications in the Microsoft Expression Studio suite before that suite was discontinued.

Expression Blend supports the WPF text engine with advanced OpenType typography and ClearType, vector-based 2D widgets, and 3D widgets with hardware acceleration via DirectX.

Microsoft Silverlight

Microsoft Silverlight (or simply Silverlight) is a deprecated application framework for writing and running rich Internet applications, similar to Adobe Flash. A plugin for Silverlight is still available for some browsers. While early versions of Silverlight focused on streaming media, later versions supported multimedia, graphics, and animation and gave developers support for CLI languages and development tools. Silverlight was also one of the two application development platforms for Windows Phone, but web pages that use Silverlight did not run on the Windows Phone or Windows Mobile versions of Internet Explorer, as there was no Silverlight plugin for Internet Explorer on those platforms.

Model–view–viewmodel

Model–view–viewmodel (MVVM) is a software architectural pattern.

MVVM facilitates a separation of development of the graphical user interface – be it via a markup language or GUI code – from development of the business logic or back-end logic (the data model). The view model of MVVM is a value converter, meaning the view model is responsible for exposing (converting) the data objects from the model in such a way that objects are easily managed and presented. In this respect, the view model is more model than view, and handles most if not all of the view's display logic. The view model may implement a mediator pattern, organizing access to the back-end logic around the set of use cases supported by the view.

MVVM is a variation of Martin Fowler's Presentation Model design pattern. MVVM abstracts a view's state and behavior in the same way, but a Presentation Model abstracts a view (creates a view model) in a manner not dependent on a specific user-interface platform.

MVVM was invented by Microsoft architects Ken Cooper and Ted Peters specifically to simplify event-driven programming of user interfaces. The pattern was incorporated into Windows Presentation Foundation (WPF) (Microsoft's .NET graphics system) and Silverlight (WPF's Internet application derivative). John Gossman, one of Microsoft's WPF and Silverlight architects, announced MVVM on his blog in 2005.Model–view–viewmodel is also referred to as model–view–binder, especially in implementations not involving the .NET platform. ZK (a web application framework written in Java) and KnockoutJS (a JavaScript library) use model–view–binder.

Multiuse Model View

The Multiuse-Model View (MMV) is an architectural pattern used in software engineering that came about as an enhancement to the MVVM design pattern. The pattern is specific for Windows Presentation Foundation (WPF) and Windows Communication Foundation (WCF) applications. While keeping the logical separation of user interface (View) versus logic (Model), MMV's primary objective is to address the shortcomings of the MVVM pattern. The Multiuse-Model of MMV typically relies on reflection to facilitate object building in order to easily integrate logic-centric object models with view-centric object models minimizing the amount of duplicate code. MMV was designed to make use of specific functions in C#, WPF and WCF to better facilitate the reuse of code between the server and the client.

Reflowable document

A reflowable document is a type of electronic document that can adapt its presentation to the output device. Typical prepress or fixed page size output formats like PostScript or PDF are not reflowable during the actual printing process because the page is not resized. For end users, the World Wide Web standard, HTML is a reflowable format as is the case with any resizable electronic page format.

In contrast to end user terminology, the notion of reflow is sometimes used to discuss desktop publishing program features for print publication page layout such as automatically balancing the amount of text in a number of columns.

Widget (GUI)

A control element (sometimes called a control or widget) in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, GTK+, and Cocoa, contain a collection of controls and the logic to render these.Each widget facilitates a specific type of user-computer interaction, and appears as a visible part of the application's GUI as defined by the theme and rendered by the rendering engine. The theme makes all widgets adhere to a unified aesthetic design and creates a sense of overall cohesion. Some widgets support interaction with the user, for example labels, buttons, and check boxes. Others act as containers that group the widgets added to them, for example windows, panels, and tabs.

Structuring a user interface with widget toolkits allows developers to reuse code for similar tasks, and provides users with a common language for interaction, maintaining consistency throughout the whole information system.

Graphical user interface builders facilitate the authoring of GUIs in a WYSIWYG manner employing a user interface markup language. They automatically generate all the source code for a widget from general descriptions provided by the developer, usually through direct manipulation.

Windows Imaging Component

Windows Imaging Component (WIC) is a Component Object Model based imaging codec framework introduced in Windows Vista (and later available in Windows XP Service Pack 3) for working with and processing digital images and image metadata. It allows applications supporting the framework to automatically get support of installed codecs for graphics file formats.

It is similar to DirectShow, or ACM/VCM, in that it can be extended using image codecs and can support third-party graphics formats on a system-wide basis. Additionally, Windows Presentation Foundation applications also automatically support the installed image codecs. Codecs for RAW image formats used by high-end professional digital cameras are also supported in this manner.

WIC enables application developers to perform image processing operations on any image format through a single set of common APIs, without requiring prior knowledge of specific image formats. By writing a codec once for WIC, developers can get system-wide support for that graphics file format in all applications that use WIC, .NET 3.x or WPF.

Windows Live TV

Windows Live for TV (codenamed Orbit, previously Nemo) is a Windows Media Center application that was part of Microsoft's Windows Live services. It provides users to access Windows Live Spaces, Messenger, and Call on their large-screen monitors or TVs using their PC.

The goal of Windows Live for TV was to bring social networking to a new form factor that is both intuitive and fun to use. The application is built using Windows Presentation Foundation (.NET Framework 3.0) and runs within Windows Media Center or directly in Windows Vista's Internet Explorer 7.0 browser.

Planned features of Windows Live for TV included:

Browse Windows Live Spaces in 3D graphics with new "Gallery" views and full keyword search

Real-time text and voice conversations with Windows Live Messenger

Call your friends' mobile or landline telephones with Windows Live Call to make affordable domestic and international calls

Make free PC-to-PC calls to other Windows Live Messenger users

Easily navigate with a mouse, keyboard or a TV remote (remote navigation requires Windows Media Center Remote and Infrared Adapter)Although beta versions of this service have been released, only Spaces functionality is available. A Program Manager has stated that development has ceased, and the service will be shut down on June 24, 2008. The Windows Live for TV team blog has not been updated for a year, while the WPF/XBAP technology used in Windows Live for TV was deprecated by Microsoft in Windows Media Center SDK 5.3.

Witty (software)

Witty is a free Twitter client for Microsoft Windows released under the open source New BSD License and powered by the Windows Presentation Foundation. Witty was developed with Microsoft Visual Studio 2008 and Expression Blend.

XAML Browser Applications

XAML Browser Applications (XBAP, pronounced "ex-bap") are Windows Presentation Foundation (.xbap) applications that are hosted and run inside a web browser such as Firefox or Internet Explorer. Hosted applications run in a partial trust sandbox environment and are not given full access to the computer's resources like opening a new network connection or saving a file to the computer disk and not all WPF functionality is available. The hosted environment is intended to protect the computer from malicious applications; however it can also run in full trust mode by the client changing the permission. Starting an XBAP from an HTML page is seamless (with no security or installation prompt). Although one perceives the application running in the browser, it actually runs in an out-of-process executable (PresentationHost.exe) managed by a virtual machine. In the initial release of .NET Framework 3.0, XBAPs only ran in Internet Explorer. With the release of .NET Framework 3.5 SP1, which includes an XBAP extension, they also run in Mozilla Firefox.

Architecture
Components
Tools
IDEs
Organizations
Graphics
Audio
Multimedia
Web
Data access
Networking
Communication
Administration and
management
Component model
Libraries
Device drivers
Security
.NET
Software factories
IPC
Accessibility
Text and multilingual
support
Low-level
High-level

This page is based on a Wikipedia article written by authors (here).
Text is available under the CC BY-SA 3.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.