Sei sulla pagina 1di 38

Introduction to WPF

Next Generation for Desktop Applications

Agha.Azeem@usa.edu.pk
azeem2793@gmail.com
Credits: Telerik
Table of Contents
1. Windows Presentation Foundation (WPF)?
2. WPF basic features
3. WPF and other UI technologies
 Windows Forms
 DirectX
 Silverlight
 HTML + CSS
4. WPF classes
5. XAML basics
2
What is Windows
Presentation Foundation?
What is Windows
Presentation Foundation?
 Windows Presentation Foundation (WPF)

 An entirely new graphical display system for


Windows
 Empowers rich-media applications
 Provides a clear separation between the UI
(XAML) and the business logic (C#,VB.NET)
 Influenced by modern display technologies such
as HTML, CSS and Flash
 Hardware-accelerated
4
WPF Basic Features
Vector Graphics
 All WPF graphics are Direct3D applications
 Direct3D (part of DirectX) is used in graphical
applications where performance is important
 Uses the video card hardware for rendering
 The result: high-quality rich-media UI
 Vector-based graphics allows to scale without
loss of quality
 WPF implements a floating-point logical pixel
system and supports 32-bit ARGB color
6
Rich Text Model
 WPF includes a number of extremely rich
typographic and text rendering features
 Some of them were not available in GDI
 Building international fonts from composite
fonts
 WPF text rendering takes advantage of
ClearType technology
 Use caching of pre-rendered text in the video
memory
 WPF has resolution-independent architecture
7
Animation
 WFP supports time-based animations

 Presentation timers are initialized and


managed by WPF
 Scene changes coordinated by using a
storyboard
 Animations can be triggered

 By other external events


 Including user action
 Animation can be defined on a per-object basis
directly from the XAML markup
8
Audio and Video Support
 WPF can incorporate audio and video into a
user interface
 Audio support in WPF is a thin layer
over the
existing functionality in Win32 and WMP
 WPF supports the video in formats WMV,
MPEG and some AVI files
 Relationshipbetween video and animation is
also supported
 They are both ways of showing moving images
 Animation can be synchronized with media
9
Styles and Templates
 In WPF a style
is a set of properties applied to
content used for visual rendering
 Similar to the concept of CSS
 E.g. setting the font weight of a Button control
 Use them to standardize non-formatting
characteristics
 WPF styles have specific features for building
applications
 Ability to apply different visual effects based on
user events 10
Styles and Templates (2)
 Templates in WPF allow you to fully change
the UI of anything in WPF
 Kinds of templates available within WPF
 ControlTemplate
 ItemsPanelTemplate
 DataTemplate
 HierarchicalDataTemplate

11
Commands
 Commands are more abstract and loosely-
coupled version of events
 Examples: copy, cut, paste, save, etc.
 WPF support for commands reduces the
amount of code we need to write
 It gives us more flexibility
to change the UI
without breaking the back-end logic
 Commands have action, source, target and
binding
12
Commands (2)
 The power of commands comes from the
following three features
 WPF defines a number of built-in commands
 Commands have automatic support for input
actions
 Some WPF controls have built-in behavior tied
to various commands
 Commands are intended to do two things:

 Check whether an action is available


 Execute an action
13
Declarative UI with XAML
 WPF introduces a new XML-based language
for describing UI elements known as XAML
 XAML = eXtensible Application Markup
Language
 XAML is a completely declarative language
 A declarative language says "what"
 An imperative language says "how"
 XAML describes the behavior and integration
of components (in most cases UI components)
14
Object-Based Drawing
 At the lower-level WPF works in terms of shapes,
not in terms of painting pixels
 Shapes are vector-based and can easily scale
 Developers create shape objects and let WPF
maintain the display in the most optimized way
 WPF provides a number of ready-to-use shape
objects like line, rectangle, ellipse, path, etc.
 Shape objects can be used inside panels and
inside most WPF controls

15
WPF and Other UI
Technologies
Windows Forms
 Windows Forms is the culmination of the
display technology built on GDI+ and User32
 It’s more mature than WPF
 Has solid limitations
 No separation between UI and the C# code
 WPF is the platform for the future of Windows
development
 Based on DirectX and Direct3D
 Separation between the UI and C# code
17
DirectX
 WPF create multimedia applications with real-
time graphics
 Such as complex physics-based simulators or
cutting-edge action games
 WPF applications are DirectX applications
 As a result, even the most mundane business
applications can use rich effects and antialiasing
 WPF graphics is entirely vector-based
 This allows zoom-in / soom-out with no loss of
quality
18
Silverlight
 Silverlight
is a cross-platform, cross-browser
plugin, which contains WPF-based technology
 Rich Internet Application (RIA) platform
 Including XAML and subset of WPF
 Provides rich-media features such as video,
vector graphics, and animations
 Silverlight
and WPF share the XAML
presentation layer
 Both technologies are similar, but Silverlight is
limited in many aspects
19
HTML + CSS vs. XAML + Styles
 Cascading Style Sheets (CSS) is a stylesheet
language
 Used to describe the presentation of
information in HTML documents
 XAML elements have Style property
 Similar to CSS (as a concept)
 The HTML and XAML are tag based systems to
describe UI
 XAML is more powerful in many aspects
20
XAML Basics
XAML Basics
 XAML is an XML-based language for creating
and initializing .NET objects
 It’s used in WPF as a human-authorable way of
describing the UI
 Used to separate the UI from the C# code
 XAML contains a hierarchy of elements
representing visual objects
 These objects are known as user interface
elements or UI elements

22
Elements and Attributes
 UI elements have a set of common properties
and functions
 Such as Width, Height, Cursor, and Tag
properties
 Declaring an XML element in XAML

 Equivalent to instantiating the object via a


parameterless constructor
 Setting an attribute on the object element
 Equivalent to setting a property of the same
name
23
XAML Basics - Example
 Constructs button with caption "OK"
<Window x:Class="MyFirstWpfApp.MainWindow" xmlns=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
Title="Hello, WPF" Height="300" Width="300">
<Button x:Name="button"
Width="200"
Height="25">OK</Button>
</Window>

24
Example – Explanation
 The root element, Window is used to declare a
portion of a class
 The two XML namespace declarations pull in
two commonly used namespaces
 The one for XAML itself
 The one for WPF
 Width, Height, Title are the XAML
properties

25
XAML Syntax
Live Demo
What is XAML?
What is XAML?
 eXtensible Application Markup Language
 XAML is a declarative markup language

 Used to simplify creation of UI for a .NET apps


 Separates UI and Business logic
 XAML enables a workflow where different
parties can work simultaneously
 The UI and the logic of an application can be
developed using different tools (VS and Blend)
What is XAML? (2)
 XAML is an XML-based language for creating
and initializing .NET objects
 It’s used in WPF and Silverlight as a human-
authorable way of describing the UI
 Used to separate the UI from the C# code
 XAML contains a hierarchy of elements
representing visual objects
 These objects are known as user interface
elements or UI elements

29
Declarative UI with XAML
 XAML introduces a new XML-based language
for describing UI elements known as XAML
 XAML = eXtensible Application Markup
Language
 XAML is a completely declarative language
 A declarative language says "what"
 An imperative language says "how"
 XAML describes the behavior and integration
of components (in most cases UI components)
30
Property Elements
 Not all properties have just a string value
 Some must be set to an instance of an object
 XAML provide syntax for setting complex
property values, called property elements
 Take the form TypeName.PropertyName
contained inside an TypeName element
A property element
<Ellipse>
<Ellipse.RenderTransform>
<RotateTransform Angle="45" CenterY="60" />
</Ellipse.RenderTransform>
</Ellipse>
32
Property Elements
Live Demo
Declarative vs.
Programmatically?
Why we need XAML?
Declarative vs.
Programmatically
 In WPF/Silverlighteach element can be done
either declaratively or programmatically
 No difference in the execution and speed
 Instantiating element from the code behind ruins
the idea of XAML
 The same as Windows Forms
 The following two examples are identical
 With XAML  From Code Behind

<Button Content="Click me!"/> Button button=new Button();


button.Content="Click me!";
Declarative UI
 When not using XAML with WPF/Silverlight

 Miss the idea of separation of concerns


 Two parties cannot work simultaneously on the
same file
 What happens when making object
declaratively?
 It is the same as instantiating the element with
parameterless constructor
 All the magic happens in
InitializeComponents()
WPF vs. Windows Forms
 Windows Forms

 Framework to design applications with GUI


 Does the same job as WPF
 Everything is in one place
 Much like java's swings (by concept)
 Windows Presentation Foundation (WPF)

 Separate UI and Business Logic


 Why change the concept of the UI?

 In Windows Forms all the code is in one place


 Harder for front-end and back-end developers
Questions?

Potrebbero piacerti anche