WPF: An Introduction

WPF stands for Windows Presentation Foundation. It is a powerful framework for building Windows applications. This tutorial explains the features that you need to understand to build WPF applications and how it brings a fundamental change in Windows applications.

Useful Links on WPF

- Microsoft
- WPF Tutorial
- Wikipedia

Features of WPF

1. Resolution Independence: WPF Application is resolution independent. I mean to say when you create a application in WPF then this application is independent of screen resolution. It auto uses the DirectX components. Resolution of WPF is always same with any type of screen resolution.

2. Separation of Concerns :In WPF application, there is two part appearance of UI and its behavior. Appearance means to say application User Interface and appearance is specified by XAML. Behavior means to say how the application work and it is handled by .NET language like C#/VB.Net, etc. Hence you can very easily customize the look of controls and its functionality. XAML is same as like in web application CSS in HTML.

3. Add Control inside a Control: WPF introduced a very nice feature, now you can add a control inside another control. Like if you want to add a textbox inside a button then very easily you can do this. This is not possible in WindowS application.

4. Declarative UI: WPF allows you to construct your interface using a markup language called XAML (pronounced zammel, rhymes with camel). We'll dig into XAML in Hour 2, "Understanding XAML," but if you have ever worked with HTML, you are already familiar with the concepts. XAML is a much richer markup language than HTML, and it has less ambiguity. Visual Studio, as well as some members of the Expression family of products are able to generate XAML natively. XAML provides a common medium for interacting with designers.

5. Intelligent Layout: Arranging the various components of an application onscreen can be complicated, and it's further complicated by the myriad display possibilities that users might have. WPF provides an extensible layout system for visually arranging the elements of a user interface. It can intelligently resize and adjust, depending on how you define the layout. We'll cover this in some detail when we discuss panels in Hour 4, "Handling Application Layout."

6. Scalable Graphics: Graphics in WPF are vector based, in contrast to raster based. Vector graphics are inherently scalable and typically require less storage than a comparable raster image. WPF still has plenty of support for raster graphics, but vectors are an excellent fit for constructing user interfaces. Vector graphics have already become popular on the web, primarily because of Adobe Flash and to a lesser extent the Scalable Vector Graphics specification (SVG). The net result for developers with WPF is that applications scale nicely without a loss in visual quality.

7. Templates: WPF makes it very easy to create reusable elements for your user interfaces. There are two types of templates in WPF: control templates and data templates. Control templates enable you to redefine the way a control looks. (For ASP.NET developers, they are conceptually similar to control adapters.) For example, if your application needs to have all its list boxes with a blue background and a red border, you could use a control template to redefine the visual appearance of list boxes. Control templates also make it easier for designers. They are able to provide a "look" for a list box through a control template, with little to no impact on the actual development process.

8. Binding: When we talk about binding in WPF, you probably jump immediately to the concept of data binding. Data binding has already been made popular with Windows Forms and ASP.NET Web Forms, and has demonstrated its usefulness there. Although WPF has significant data binding features—significant in that it greatly outclasses its predecessors—it also allows you to declaratively bind other things such as commands, key bindings, animation, and events. For example, you can declaratively bind a button control to a command for pasting.

9. Styling: WPF really shines when it comes to making an application look pretty. It allows you to do such things as make the background of a text box red or surround a button with a thick blue border. Styles in WPF are similar to cascading style sheets for HTML. Though again, WPF styles are richer and have less ambiguity. They encompass all the visual characteristics you would expect, such as padding, margin, position, color, and so on. But you can also use styles to declare nonvisual properties. Styles are also easy to reuse, and when you combine them with templates, you are able to do some amazing things.

10. Triggers: Both templates and styles in WPF support the notion of triggers. A trigger enables you to tell WPF something like this: "When the mouse is over the button, make the background purple." In other words, triggers enable you to declaratively handle changes of state. You will also find them useful for kicking off animations.

11. Animation: The animation framework in WPF is very impressive, and a great deal more useful than you might think. Most properties in WPF can be animated, and support exists for timelines, key frames, and interpolation. Animations are easily integrated with templates and styles. For example, you might define a style for a button that animates the button when you move the mouse over it. Flash developers and designers will be impressed with the available features.