An Introduction To Silverlight Gergely Orosz @gergelyorosz

An Introduction To Silverlight
Gergely Orosz
http://GregDoesIT.com
@gergelyorosz
In this presentation

What SL is capable of

How it is different

Learning curve overview

Why use SL

Non-traditional way
What is Silverlight?

Rich Internet Application (RIA) platform

Capabilities are similar to


Flash

Java FX
Web-based subset of WPF
Flash vs Silverlight
Flash
Silverlight
Animation model
Frame-based
Time-based
Language
ActionScript
CLR-compilant
(VB.NET, C#)
Platform
All major
Limited Linux
(Moonlight)
Multithreading
No (from
programmer
perspective)
Yes
Flash vs Silverlight
Flash
Silverlight
Image support
Most formats
JPG and PNG
Video, audio
Multiple formats,
low-level APIs
VC-1 codec,
WMW, WM, no
low-level APIs
More costeffective
Deep Zoom
Streaming
Other
More mature
Flash vs Silverlight

Features: almost identical

Development environments

Streaming

Mobile: ?
WPF

Descendant of Windows Forms

Built on .NET 3.5

XAML: descriptive markup language
WPF / Silverlight features

Vector graphics & bitmap effects

Data binding & UI update

Animations

Rich content: videos, images, sounds

Styling, templates
Silverlight: lightweight WPF

CLR within Browser

Limited CLR:

Not all libraries

Local filesystem limited

Networking limited
XAML

Separate UI and logic

XML markup, clean syntax

XAML and code behind files

Does not support generics
XAML: a simple example

Code
UI Basics

Layout


Controls


TextBlock, Image, MediaElement
Brushes


Button, HyperLinkButton, ComboBox etc
Text, images


Grid, Canvas, StackPanel
Solid, linear, radial, image, video
User Controls
UI Basics: Example

VideoBrush Example

Use MSDN/references to look up UI elements
Styling and templating



Defining styles:

TargetType

Setters that are valid on the target
Templates

Customize controls

Uses ControlTemplate class
Easy to define in XAML
Styling and templating: example

Code
Dependency Properties


Extend CLR properties

Property changed notification

Data Binding

Animating

Default value and ClearValue
Has to inherit DependencyObject
Dependency Properties: example

Registering, default value, Property Changed

Animating

Data Binding
Attached Properties

Global property that can be set on any object
element

Static Dps

Used by the owner, defined on the child

E.g. Canvas.Left, Grid.Column
Attached properties: example

Code
MVVM

How to effectively build large applications in
WPF

Lots of UI markup, lots of data binding

Variation of MVC
MVVM

Model


View


BL, UI independent
Visual elements + input processing
Data binding

View and model can be bound directly

Usually direct binding is not possible
MVVM

ViewModel

“Model of a View”

Abstraction of the view: contains state and
behaviour

Data binder/converter:


Model information → View information
View commands → Model
MVVM: Example
MVVM in Silverlight

Worth using on larger projects

Frameworks

MEF


Official
Prism

Non-official, but MS
Summary

Similar to WPF

XAML

Styling & templating

DPs

Attached properties

MVVM for larger applications
Effort learning SL

Project structure: small

UI: significant

Media: moderate

Data binding: moderate
Effort learning SL

Network: moderate

Events: moderate

Other: moderate - significant

Dependency Properties, Attached Properties

MVVM

Navigation Framework

Out of Browser applications
Why It's Worth It

Things you couldn't do before!

Good looking controls & pages

Animation

Video & vector graphics
Why It's Worth It

Silverlight client for Facebook

Silverlight Toolkit (with source)

http://www.jumpman23mosaic.com

http://silverlight.net/showcase/

http://nokola.com/ (with source)
Suggested Learning Curve

C# / VB experience

Web

http://silverlight.net/getstarted/

MSDN: Getting Started with Silverlight

Books

WPF
Thank You