WPF - santhoshgudise

advertisement
WPF – Windows Presentation
Foundation
what is it, what can you do with it
and how do you get started
Windows Presentation Foundation
A productive, unified approach to UI, media
and documents to deliver unmatched UX
 Deliver Innovative User Interfaces
 Increase Developer-Designer Productivity;
 Leveraging Existing Code Base and Skills Set
“Application = Code + Markup”
Why WPF?
For example, if you want to create a stylish glow
button you need to create a custom control and
paint every aspect of the button (in all its different
states) using a lower-level drawing model.
We can’t think about Animation …..!
think about introducing animated effects such as
spinning text, shimmering buttons, shrinking
windows, or live previews because you’ll have to
paint every detail by hand.
The Windows Presentation Foundation (WPF) changes all
this by introducing a new model with entirely different
plumbing. Although WPF includes the standard controls
you’re familiar with, it draws every text, border, and
background fill itself. As a result,
WPF can provide much more powerful features that let
you alter the way any piece of screen content is
Rendered.
you can use transformation objects to rotate, stretch,
scale, and skew anything in your user interface
WPF is a powerful new infrastructure based on
DirectX
Overall, WPF combines the best of the old world of
Windows development with new innovations for building
modern, graphically rich user interfaces.
Although Windows Forms applications will continue to
live on for years, developers embarking on new
Windows development projects should consider WPF.
What is there in WPF?
In WPF, the underlying graphics technology isn’t GDI/GDI+.
Instead, it’s DirectX. Remarkably, WPF applications use
DirectX no matter what type of user interface you create. That
means that whether you’re designing complex threedimensional graphics or just drawing buttons and plain text, all
the drawing work travels through the DirectX pipeline.
One component that’s still in the picture (to a limited extent) is
User32. Because WPF still relies on User32 for certain
services, such as handling and routing input and sorting out
which application owns which portion of screen. However, all
the drawing is funnelled through DirectX.
WPF TIERS
Video cards differ significantly. When WPF assesses a video card, it
considers a number of factors, including
the amount of RAM on the video card, support for pixel shaders and
support for vertex shaders . Based on these details, it assigns a
rendering tier value.
WPF recognizes three rendering tiers. They are as follows:
• Rendering Tier 0. The video card will not provide any hardware
acceleration. This corresponds to a DirectX version level of less than
7.0.
• Rendering Tier 1. The video card can provide partial hardware
acceleration. This corresponds to a DirectX version level greater than
7.0 but less than 9.0.
• Rendering Tier 2. All features that can be hardware accelerated will
be. This corresponds to a DirectX version level greater than or equal
to 9.0.
WPF – Higher Level API
A web-like layout model
A rich drawing model.
Support for audio and video media.
Animation as a first-class programming
concept
Styles and templates
Commands
Declarative user interface.
Page-based applications
Resolution Independence
Evolution of WPF
Although WPF is a relatively new technology, it already exists in
two versions:
• WPF 3.0. The first version of WPF was released with two other
new technologies:
Windows Communication Foundation (WCF) and Windows
Workflow Foundation (WF). Together, these three technologies
were called the .NET Framework 3.0 (even though the core bits
of .NET weren’t changed).
• WPF 3.5. A year later, a new version of WPF was released as
part of the .NET Framework 3.5. The new features in WPF are
mostly minor refinements. Some of these bug fixes and
performance improvements are available to .NET Framework
3.0 applications through the .NET Framework 3.0 Service Pack
1.
New Features in 3.5
Firefox support for XBAPs
Data binding support for LINQ
Support for placing interactive controls (such as
buttons) inside a RichTextBox control
Support for placing 2-D elements on 3-D surfaces
An add-in model. The add-in model allows an application
to host third-party components in a limited security context.
Architecture
WPF uses a multilayered architecture. At the top, your
application interacts with a high-level set of services that
are completely written in managed C# code. The actual
work of translating .NET objects into Direct3D textures
and triangles happens behind the scenes, using a lower
level unmanaged component called milcore.dll.
Applications
Controls
Styling
Layout
Data
Content
Action
Presentation Framework
PresentationCore.dll
MilCore.dll
DirectX
Driver
• PresentationFramework.dll holds the top-level WPF types,
including those that represent windows, panels, and other types
of controls. It also implements higher-level programming
abstractions such as styles. Most of the classes you’ll use directly
come from this assembly.
• PresentationCore.dll holds base types, such as UIElement
and Visual, from which all shapes and controls derive. If you don’t
need the full window and control abstraction layer, you can drop
down to this level and still take advantage of WPF’s rendering
engine.
WindowsBase.dll holds even more basic ingredients that have
the potential to be reused outside of WPF, such as DispatcherObject
and DependencyObject, which introduces the plumbing for
dependency properties
milcore.dll is the core of the WPF rendering system and the
foundation of the Media Integration Layer (MIL). Its composition
engine translates visual elements into the triangle and textures that
Direct3D expects.
What type of Applications
can be built
• WPF intended to replace both webforms and
windows forms – apps can be built to run in a
browser or a standalone window
• Windows forms and WPF pages/windows can coexist in the same application
• One WPF page/window can have both types of
controls on it
• A new type of web application called XAML
Browser Application XBAP (formerly Web Browser
Application WBA)
XAML
short for Extensible Application Markup Language, and pronounced
“zammel” is a markup language used to instantiate .NET objects
If you’re a graphic designer, that tool is likely to be a graphical
design and drawing program such as Microsoft Expression Blend.
Ability to integrate the workflow between developers and designers
is one of the key reasons that Microsoft created XAML.
When designing a WPF application in Visual Studio, the window
you’re designing isn’t translated into code. Instead, it’s serialized into
a set of XAML tags. When you run the application, these tags are
used to generate the objects that compose the user interface.
• Every element in a XAML document maps to an instance of
a .NET class. The name of the element matches the name of
the class exactly.
For example, the element <Button> instructs WPF to create a
Button object.
• As with any XML document, you can nest one element inside
another. As you’ll see, XAML gives every class the flexibility to
decide how it handles this situation.
• You can set the properties of each class through attributes.
However, in some situations an attribute isn’t powerful enough
to handle the job. In these cases, you’ll use nested tags with a
special syntax.
XAML Namespaces
The XAML parser also needs to know the .NET
namespace where this class is located. For example, the
Window class could exist in several places—it might refer
to the System.Windows.Window class, or it could refer to a
Window
class in a third-party component, or one you’ve defined in
your application.
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/pres
entation
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
XAML = Extensive Application Markup
Language
•
•
•
XAML
<Button Width="100"> OK
<Button.Background>
LightBlue
</Button.Background>
</Button>
Easily tool able, declarative markup
Code and content are separate
Can be rendered in the browser / standalone application
C#
Button b1 = new Button();
b1.Content = "OK";
b1.Background = new
SolidColorBrush(Colors.LightBlue);
b1.Width = 100;
VB.NET
Dim b1 As New Button
b1.Content = "OK"
b1.Background = New _
SolidColorBrush(Colors.LightBlue)
b1.Width = 100
XAML: Unified Programming Model
• Programming and markup do not currently coexist very
well together
– Code is great for logic, but can be clunky for the job of
laying out text and UIs
– Markup is great for defining text and images, but is
clunky when dealing with logic and user interaction
• WPF meshes the two technologies
• Unified approach to combining markup and code
– Most apps written to WPF will be a mix of XAML and
code
• Markup language for declaratively designing and
creating application UIs
• XAML maps XML markup to objects in the .NET
Framework
– Every tag maps to a class and every attribute to a
property
– But really independent of WPF
• Markup and procedural code are peers in functionality
and performance
– code and markup are both first class citizens
– consistent model between UI, documents, and media
Coding in XAML
XAML
<Button Background=“LightBlue” Width=“100”> Okay
</Button>
C#
Button b1 = new Button();
b1.Content = "Okay";
b1.Background = new
SolidColorBrush(Colors.LightBlue);
b1.Width = 100;
•
XAML allows one root tag, generally an output
surface
Coding with WPF and XAML
• Integrating markup and code
XAML File
<Canvas ID="root“ xmlns="http://schemas.microsoft.com/2003/xaml“>
<Button Click="Button_Click">Click Me!</Button>
</Canvas>
C# code-behind file
using…
namespace Button
{
public partial class Default : Panel
{ // Event handler
void Button_Click (object sender, System.Windows.Controls.ClickEventArgs e)
{ btn1.Background = System.Windows.Media.Brushes.Red; }
}
}
Application Object
 Application object acts as container for
more complex applications
 MainWindow
 Application events like
 Startup & Shutdown
Content Model
WPF offers strong separation of behaviour (API)
and presentation
Behaviour (API) consists of
Commands, Properties, Events & Methods
Presentation of controls is controlled by
Nested content
Templates
 WPF Content Models:
 In WPF, different classes of elements are categorized based on
the type and number of their logical children.
 These logical children are also referred as the "content" of the
control. WPF defines several different "content models" for
various different classes of elements.
 The controls that can contain a single item (single logical child of
type Object) are called "content controls". These controls derive
from the Content Control base class.
 Controls that can contain a collection of items (many logical
children of type Object) are called "items controls". These
controls derive from the Items Control base class.
There are different kinds of content models available in WPF
like Controls content model, Decoder content model, Panel
content model, TextBox and TextBlock content model.
Download