introduction to silverlight for windows phone

39
An Introduction to Silverlight Dave Bost [email protected] http://davebost.com | @davebost

Upload: dave-bost

Post on 15-May-2015

1.205 views

Category:

Technology


1 download

DESCRIPTION

From the Windows Phone Boot Camp Series - Fall 2011

TRANSCRIPT

Page 1: Introduction to Silverlight for Windows Phone

An Introduction to Silverlight

Dave [email protected]://davebost.com | @davebost

Page 2: Introduction to Silverlight for Windows Phone

Windows Phone

Topics

The Metro design style Silverlight Components Creating a Silverlight Application Silverlight and XAML Introduction to Silverlight Layout Components and Events Silverlight Project Templates ApplicationBar Page Navigation

2

Page 3: Introduction to Silverlight for Windows Phone

Windows Phone

Page 4: Introduction to Silverlight for Windows Phone

Windows Phone

Windows Phone and Metro

To make life easier for us the Metro style is “baked in” to the Windows developer tools

The default appearance, behaviour and fonts of the user elements all match the style

If you want to find out more about Metro on phone you can read the “User Experience Design Guidelines”

http://msdn.microsoft.com/en-us/library/hh202915.aspx

4

Page 5: Introduction to Silverlight for Windows Phone

Windows Phone 5

Tools for the job : Graphical Design Great design separates the

graphical design aspects from the programming

The designer works on the look and feel of the application

The programmer implements the required behaviours

Silverlight is designed to support this

A Silverlight designer can use the “Expression Blend” to specify the appearance of the user interface

A version of Blend for the phone is supplied as part of the phone SDK

5

Page 6: Introduction to Silverlight for Windows Phone

Windows Phone 6

Metro Templates and Components Visual Studio

provides a set of Metro project templates

Each of them maps onto a particular style of application

6

Page 7: Introduction to Silverlight for Windows Phone

Windows Phone 7

Application Types and Templates

The three application types provide quite different user experiences

Select the one that you feel is the most appropriate

7

Page 8: Introduction to Silverlight for Windows Phone

Windows Phone 8

Silverlight display elements

Application title Page title First number Plus text Second number Equals button Result text

8

Page 9: Introduction to Silverlight for Windows Phone

Windows Phone 9

Silverlight element class hierarchy The Silverlight class hierarchy is

quite complex Everything is based on the

FrameworkElement class which contains the fundamental properties of all elements

You can derive your own components if you wish

FrameworkElement

TextBlock

TextBox ContentControl

ButtonBase

Button

Control

9

Page 10: Introduction to Silverlight for Windows Phone

Windows Phone 10

Elements in AddingMachine

The adding machine actually contains three different types of Silverlight display element

TextBox Used to receive user input from the keyboard

TextBlock Used to display messages to the user

Button Used to cause events in the application

10

Page 11: Introduction to Silverlight for Windows Phone

Windows Phone 11

Elements and XAML

XAML is the markup language that describes the Silverlight UI components

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Height="72" HorizontalAlignment="Left" Margin="8,19,0,0" Name="firstNumberTextBox" Text="0" VerticalAlignment="Top" Width="460" TextAlignment="Center" /> . . . <Button Content="equals" Height="72" HorizontalAlignment="Left" Margin="158,275,0,0" Name="equalsButton" VerticalAlignment="Top" Width="160" Click="equalsButton_Click" /> . . .</Grid>

11

Page 12: Introduction to Silverlight for Windows Phone

Windows Phone 12

Grid container element

Grid is a container into which you can position display elements

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Height="72" HorizontalAlignment="Left" Margin="8,19,0,0" Name="firstNumberTextBox" Text="0" VerticalAlignment="Top" Width="460" TextAlignment="Center" /> . . . <Button Content="equals" Height="72" HorizontalAlignment="Left" Margin="158,275,0,0" Name="equalsButton" VerticalAlignment="Top" Width="160" Click="equalsButton_Click" /> . . .</Grid>

12

Page 13: Introduction to Silverlight for Windows Phone

Windows Phone 13

TextBox element

TextBox is used for text entry TextBlock can be used for text display

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Height="72" HorizontalAlignment="Left" Margin="8,19,0,0" Name="firstNumberTextBox" Text="0" VerticalAlignment="Top" Width="460" TextAlignment="Center" /> . . . <Button Content="equals" Height="72" HorizontalAlignment="Left" Margin="158,275,0,0" Name="equalsButton" VerticalAlignment="Top" Width="160" Click="equalsButton_Click" /> . . .</Grid>

13

Page 14: Introduction to Silverlight for Windows Phone

Windows Phone 14

Button element

Button is used for user actions and generates events when activated

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Height="72" HorizontalAlignment="Left" Margin="8,19,0,0" Name="firstNumberTextBox" Text="0" VerticalAlignment="Top" Width="460" TextAlignment="Center" /> . . . <Button Content="equals" Height="72" HorizontalAlignment="Left" Margin="158,275,0,0" Name="equalsButton" VerticalAlignment="Top" Width="160" Click="equalsButton_Click" /> . . .</Grid>

14

Page 15: Introduction to Silverlight for Windows Phone

Windows Phone 15

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBox Height="72" HorizontalAlignment="Left" Margin="8,19,0,0" Name="firstNumberTextBox" Text="0" VerticalAlignment="Top" Width="460" TextAlignment="Center" /> . . . <Button Content="equals" Height="72" HorizontalAlignment="Left" Margin="158,275,0,0" Name="equalsButton" VerticalAlignment="Top" Width="160" Click="equalsButton_Click" /> . . .</Grid>

Button element

Click is the button clicked event which is bound to the method specified

15

Page 16: Introduction to Silverlight for Windows Phone

Windows Phone 16

Button click event handler

The event hander for the button takes the values out of the textboxes, parses them and then calculates and displays the result

private void equalsButton_Click(object sender, RoutedEventArgs e){ float v1 = float.Parse(firstNumberTextBox.Text); float v2 = float.Parse(secondNumberTextBox.Text);

float result = v1 + v2;

resultTextBlock.Text = result.ToString();}

16

Page 17: Introduction to Silverlight for Windows Phone

Demo

Demo 1: The Silverlight Adding Machine

17

Page 18: Introduction to Silverlight for Windows Phone

Windows Phone 18

Best Practice: Keyboard use

It is best if the user can still press the equals button when the keyboard is displayed

This means the equals button should be moved up the screen

18

Page 19: Introduction to Silverlight for Windows Phone

Windows Phone 19

Selecting Orientations

A XAML property for the phone application page lets you select the orientation options available

Your application can bind to an event which is fired when the orientation changes

SupportedOrientations="Portrait"

SupportedOrientations="PortraitOrLandscape"

19

Page 20: Introduction to Silverlight for Windows Phone

Windows Phone 20

Using a StackPanel

To automatically handle orientation change we can use a StackPanel container that will stack the display components

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel> <TextBox Height="72" HorizontalAlignment="Center" .../> <TextBlock Height="56" HorizontalAlignment="Center" .../> <TextBox Height="72" HorizontalAlignment="Center" .../> <Button Content="equals" Height="72" ...> <TextBlock Height="46" HorizontalAlignment="Center" .../> </StackPanel></Grid>

20

Page 21: Introduction to Silverlight for Windows Phone

Demo

Demo 2: Orientation Handling

21

Page 22: Introduction to Silverlight for Windows Phone

Windows Phone 22

Handling errors

A program can catch errors as on the desktop There is also a MessageBox mechanism as well

try{ v1 = float.Parse(firstNumberTextBox.Text); v2 = float.Parse(secondNumberTextBox.Text);}catch{ MessageBox.Show("Invalid number"); return;}

22

Page 23: Introduction to Silverlight for Windows Phone

Windows Phone 23

Configuring the input scope

If all you want from the user is a number it is dangerous to allow them to enter text as well

You can add to the XAML to specify that the keyboard only accepts numbers

<TextBox InputScope="Number" ...

23

Page 24: Introduction to Silverlight for Windows Phone

Demo

Demo 3: Complete Adding Machine

24

Page 25: Introduction to Silverlight for Windows Phone

ApplicationBar

Page 26: Introduction to Silverlight for Windows Phone

Windows Phone 26

Application ChromeSystem Tray and Application Bar System Tray

System owned indicator area that displays system-level status information

Apps can show/hide Microsoft.Phone.Shell.SystemTray.Is

Visible = false; Application Bar

Area where applications can display buttons for the most common tasks

Can display pop-up menu for less common tasks

26

Page 27: Introduction to Silverlight for Windows Phone

Don’t fill all 4 slots if not needed

Use the ApplicationBar instead of creating your own menu system

Up to 4 buttons plus optional menuSwipe up the bar to bring up the menu

Swipe up the bar to bring up the menuUse white foreground on transparent background for icons

System will colorize button according to users selected theme

Application Bar

27

Page 28: Introduction to Silverlight for Windows Phone

Windows Phone

Application Bar in Xaml<phone:PhoneApplicationPage x:Class=“MyApp.MainPage” … >

<phone:PhoneApplicationPage.ApplicationBar> <shell:ApplicationBar x:Name="AppBar" IsMenuEnabled="True"> <shell:ApplicationBar.Buttons> <shell:ApplicationBarIconButton x:Name="NewContactButton" IconUri="Images/appbar.new.rest.png" Text="New" Click="NewContactButton_Click"/> <shell:ApplicationBarIconButton x:Name="SearchButton" IconUri="Images/appbar.feature.search.rest.png" Text="Find" Click="SearchButton_Click"/> </shell:ApplicationBar.Buttons> <shell:ApplicationBar.MenuItems> <shell:ApplicationBarMenuItem x:Name="GenerateMenuItem" Text="Generate Data" Click="GenerateMenuItem_Click" /> <shell:ApplicationBarMenuItem x:Name="ClearMenuItem" Text="Clear Data" Click="ClearMenuItem_Click" /> </shell:ApplicationBar.MenuItems> </shell:ApplicationBar> </phone:PhoneApplicationPage.ApplicationBar>

28

Page 29: Introduction to Silverlight for Windows Phone

Windows Phone

ApplicationBar paints on side of screen in landscape

Has built-in animation when page switches orientation

App Bar & Landscape

29

Page 30: Introduction to Silverlight for Windows Phone

Page Navigation

Page 31: Introduction to Silverlight for Windows Phone

Windows Phone

Frame and Page Frame

Top-level container control PhoneApplicationFrame class Contains the page control and

system elements such as system tray and application bar

Page Fills the entire content region of

the frame PhoneApplicationPage-derived

class Contains a title Optionally surfaces its own

application bar

31

Page 32: Introduction to Silverlight for Windows Phone

Windows Phone

Page Navigation

Silverlight on Windows Phone uses a Page-based navigation model

Similar to web page model Each page identified by a URI Each page is essentially stateless

private void hyperlinkButton1_Click( object sender, RoutedEventArgs e){ NavigationService.Navigate( new Uri("/SecondPage.xaml", UriKind.RelativeOrAbsolute) );}

32

Page 33: Introduction to Silverlight for Windows Phone

Windows Phone

Navigating Back Application can provide controls

to navigate back to preceding page

The hardware Back key will also navigate back to preceding page

No code required – built-in behaviour

private void button1_Click( object sender, RoutedEventArgs e){ NavigationService.GoBack();}

33

Page 34: Introduction to Silverlight for Windows Phone

Demo

ApplicationBar, Page Navigation and Pivot Control

34

Page 35: Introduction to Silverlight for Windows Phone

Windows Phone 35

Review

Windows Phone applications use Silverlight to express the design of their user interface

The design is expressed in a XAML text file that identifies and configures display elements

Elements can also be manipulated as code objects There are a set of Silverlight templates for applications and elements

based on the Metro design You can create multiple Silverlight pages and add them to your project Navigation to pages is performed on the basis of uri (Uniform Resource

Indicator) values The back button normally navigates back to the source page, but this

can be overridden The uri can contain simple text messages Pages can share larger objects in the App.xaml page

35

Page 36: Introduction to Silverlight for Windows Phone

Bonus

(and really good to know)

Page 37: Introduction to Silverlight for Windows Phone

Silverlight Toolkit for Windows Phone A product of the Microsoft Silverlight team The Silverlight Toolkit adds tons of additional controls ‘out of

band’ from the official product control set Includes full open source code, samples, documentation, and

design-time support for controls Refresh every 3 months or so

Bug fixes New controls

http://silverlight.codeplex.com

37

Page 38: Introduction to Silverlight for Windows Phone

Windows Phone

NuGet

Package management system for .NET Simplifies incorporating 3rd party libraries Developer focused Free, open source

Install NuGet using the Visual Studio ExtensionManager

Use NuGet to add libraries such as the Silverlight Toolkit to your project

38

Page 39: Introduction to Silverlight for Windows Phone

Q&A