---
title: "Application Development"
description: Learn how to build a variety of applications using the framework of Windows Presentation Foundation (WPF).
ms.date: "01/26/2018"
helpviewer_keywords:
- "WPF [WPF], about application development"
- "application development [WPF], about"
ms.assetid: 2996ce5e-81e9-49ae-881b-952db3dd1b7e
---
# Application Development
Windows Presentation Foundation (WPF) is a presentation framework that can be used to develop the following types of applications:
- Standalone Applications (traditional style Windows applications built as executable assemblies that are installed to and run from the client computer).
- XAML browser applications (XBAPs) (applications composed of navigation pages that are built as executable assemblies and hosted by Web browsers such as Microsoft Internet Explorer or Mozilla Firefox).
- Custom Control Libraries (non-executable assemblies containing reusable controls).
- Class Libraries (non-executable assemblies that contain reusable classes).
> [!NOTE]
> Using WPF types in a Windows service is strongly discouraged. If you attempt to use these features in a Windows service, they may not work as expected.
To build this set of applications, WPF implements a host of services. This topic provides an overview of these services and where to find more information.
## Application Management
Executable WPF applications commonly require a core set of functionality that includes the following:
- Creating and managing common application infrastructure (including creating an entry point method and a Windows message loop to receive system and input messages).
- Tracking and interacting with the lifetime of an application.
- Retrieving and processing command-line parameters.
- Sharing application-scope properties and [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] resources.
- Detecting and processing unhandled exceptions.
- Returning exit codes.
- Managing windows in standalone applications.
- Tracking navigation in XAML browser applications (XBAPs), and standalone applications with navigation windows and frames.
These capabilities are implemented by the class, which you add to your applications using an *application definition*.
For more information, see [Application Management Overview](application-management-overview.md).
## WPF Application Resource, Content, and Data Files
WPF extends the core support in the Microsoft .NET Framework for embedded resources with support for three kinds of non-executable data files: resource, content, and data. For more information, see [WPF Application Resource, Content, and Data Files](wpf-application-resource-content-and-data-files.md).
A key component of the support for WPF non-executable data files is the ability to identify and load them using a unique URI. For more information, see [Pack URIs in WPF](pack-uris-in-wpf.md).
## Windows and Dialog Boxes
Users interact with WPF standalone applications through windows. The purpose of a window is to host application content and expose application functionality that usually allows users to interact with the content. In WPF, windows are encapsulated by the class, which supports:
- Creating and showing windows.
- Establishing owner/owned window relationships.
- Configuring window appearance (for example, size, location, icons, title bar text, border).
- Tracking and interacting with the lifetime of a window.
For more information, see [WPF Windows Overview](wpf-windows-overview.md).
supports the ability to create a special type of window known as a dialog box. Both modal and modeless types of dialog boxes can be created.
For convenience, and the benefits of reusability and a consistent user experience across applications, WPF exposes three of the common Windows dialog boxes: , , and .
A message box is a special type of dialog box for showing important textual information to users, and for asking simple Yes/No/OK/Cancel questions. You use the class to create and show message boxes.
For more information, see [Dialog Boxes Overview](dialog-boxes-overview.md).
## Navigation
WPF supports Web-style navigation using pages () and hyperlinks (). Navigation can be implemented in a variety of ways that include the following:
- Standalone pages that are hosted in a Web browser.
- Pages compiled into an XBAP that is hosted in a Web browser.
- Pages compiled into a standalone application and hosted by a navigation window ().
- Pages that are hosted by a frame (), which may be hosted in a standalone page, or a page compiled into either an XBAP or a standalone application.
To facilitate navigation, WPF implements the following:
- , the shared navigation engine for processing navigation requests that is used by , , and XBAPs to support intra-application navigation.
- Navigation methods to initiate navigation.
- Navigation events to track and interact with navigation lifetime.
- Remembering back and forward navigation using a journal, which can also be inspected and manipulated.
For information, see [Navigation Overview](navigation-overview.md).
WPF also supports a special type of navigation known as structured navigation. Structured navigation can be used to call one or more pages that return data in a structured and predictable way that is consistent with calling functions. This capability depends on the class, which is described further in [Structured Navigation Overview](structured-navigation-overview.md). also serves to simplify the creation of complex navigation topologies, which are described in [Navigation Topologies Overview](navigation-topologies-overview.md).
## Hosting
XBAPs can be hosted in Microsoft Internet Explorer or Firefox. Each hosting model has its own set of considerations and constraints that are covered in [Hosting](hosting-wpf-applications.md).
## Build and Deploy
Although simple WPF applications can be built from a command prompt using command-line compilers, WPF integrates with Visual Studio to provide additional support that simplified the development and build process. For more information, see [Building a WPF Application](building-a-wpf-application-wpf.md).
Depending on the type of application you build, there are one or more deployment options to choose from. For more information, see [Deploying a WPF Application](deploying-a-wpf-application-wpf.md).
## Related Topics
|Title|Description|
|-----------|-----------------|
|[Application Management Overview](application-management-overview.md)|Provides an overview of the class including managing application lifetime, windows, application resources, and navigation.|
|[Windows in WPF](windows-in-wpf-applications.md)|Provides details of managing windows in your application including how to use the class and dialog boxes.|
|[Navigation Overview](navigation-overview.md)|Provides an overview of managing navigation between pages of your application.|
|[Hosting](hosting-wpf-applications.md)|Provides an overview of XAML browser applications (XBAPs).|
|[Build and Deploy](building-and-deploying-wpf-applications.md)|Describes how to build and deploy your WPF application.|
|[Introduction to WPF in Visual Studio](../getting-started/introduction-to-wpf-in-vs.md)|Describes the main features of WPF.|
|[Walkthrough: My first WPF desktop application](../getting-started/walkthrough-my-first-wpf-desktop-application.md)|A walkthrough that shows how to create a WPF application using page navigation, layout, controls, images, styles, and binding.|