--- 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 UI 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.|