in windows 8 - SilverlightShow

advertisement
Metro and WinRT for the
Silverlight/WPF Developer
SILVERLIGHTSHOW.NET WEBINARS SERIES
GILL CLEEREN, February 2nd 2012
www.snowball.be - gill.cleeren@ordina.be - @gillcleeren
About myself...
•
•
•
•
•
Gill Cleeren
.NET Architect @Ordina (www.ordina.be)
Microsoft Regional Director
Silverlight MVP
Speaker (TechDays, TechEd, DevReach, DevDays, NDC Norway,
Telerik Usergroup tour Sweden, UK and Scotland...)
• Visug user group lead (www.visug.be)
• Author (Silverlight 4 Data and services cookbook)
– And a new one is being finished as we speak!
• Blog: www.snowball.be
• Email: gill@snowball.be
• Twitter: @gillcleeren
Some practical stuff
• Ask questions through Q&A window
– We’ll answer them after the session or by personal
mail
• A link to the video recording will be sent to you
You can win!
Complete the post-webinar survey and win!
You can win one of the 3 ebooks
Getting Ready for
Microsoft Silverlight Exam 70-506!
You can win!
Tweet this webinar (comments, feedback...)
using #webinarsilverlightshow tag!
You can win one of the 3 ebooks
Silverlight 4
Data and Services Cookbook
(yep, that’s my book  )
New version coming soon!
• Updated for Silverlight 5
• Over 115 recipes (that’s
30 extra!)
• Extended to about 700
pages (that’s 250 extra!)
• Covering WP7, MVVM,
RIA Services and much
more!
• More info:
http://bit.ly/SL5DataAndServices
This may look like the typical
“Introduction to Silverlight for developers”
or something...
But it’s really all about transferring
your current knowledge
to Windows 8.
This is the road to development on
Windows 8
In this part...
• General XAML stuff for Windows 8
• Old and new controls
• Finding your way with navigation
This is the road to development on
Windows 8
In the second part (next week Thursday 9th February)
• Styling and templating
• Data in your Windows 8 apps
– Getting data
– Data binding
• The Application Lifecycle (Copyright 2010 Windows Phone 7)
• Tiles and more (Copyright 2010 Windows Phone 7)
• IO’ing in Metro apps
• Visit SilverlightShow.net
Focus on...
Metro style Apps
XAML
C
C++
Desktop Apps
HTML / CSS
C#
VB
JavaScript
(Chakra)
HTML
JavaScript
C
C++
C#
VB
Win32
.NET
/ SL
WinRT APIs
Communication
& Data
Graphics & Media
Devices &
Printing
Application Model
Windows Core OS Services
Internet
Explorer
Before we begin... You can earn something!
For every Metro topic you already know,
you get a badge!
GENERAL XAML STUFF
FOR WINDOWS 8
The user is free to select any device,
Windows 8 will support it.
Your app needs to adapt to bring
the best possible experience.
Size doesn’t matter...
(For XAML, that is)
• Minimum app resolution is 1024x768
• Baseline resolution is 1366x768
• On any resolution, your app should still look
good
– However, it should use the added screen estate
We’re lucky to have XAML
• XAML supports fluid layout
– Horizontal and vertical stretching of elements
– Star-sizing
(Yes, you know this already...)
XAML has fixed layouts
<Grid x:Name="LayoutRoot" Background="Green">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250" />
<ColumnDefinition Width="250" />
<ColumnDefinition Width="250" />
</Grid.ColumnDefinitions>
<Rectangle Fill="Red" Grid.Column="1" />
</Grid>
But fluid layouts are often a better
choice
<Grid x:Name="LayoutRoot" Background="Green">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Fill="Red" Grid.Column="1" />
</Grid>
Windows 8 supports new and changing formats for apps:
an app can be snapped while running.
Snap view is new...
• The “Snapped app” is always 320px wide
• User can choose to snap your app
– Any app can be snapped, even a game
• Some apps don’t make sense in snapped view, pausing them might be
a good idea
• Context is maintained between several views
– Continuous flow of context
• For perfect experience, the app can adapt to changing
views
• Scrolling patterns change in Snapped
• Can be called by swiping or using Win + .
Grid Template Normal
Grid Template Snapped
And the user will rotate that device...
He will (we all know that...).
What will (or should we say “Should”?) your app do?
What about orientation?
• Windows 8 supports to be rotated (if
supported by the device)
– Don’t go rotating your laptop, it won’t work
• Apps behave consistently in orientation
changes
• Apps can be tailored to be in specific
orientations
• Apps can prefer and/or lock an orientation
• While in Portrait, snapping doesn’t work
New properties for orientation
…
<Application …>
<VisualElements
DisplayName="Application18"
Logo="Images\Logo.png"
SmallLogo="Images\SmallLogo.png"
Description="Application18"
ForegroundText="light"
BackgroundColor="#222222"
InitialRotationPreference="landscapeAndFlipped">
…
New properties for orientation
protected override void
OnLaunched(LaunchActivatedEventArgs args)
{
DisplayProperties.AutoRotationPreferences =
DisplayOrientations.Landscape |
DisplayOrientations.LandscapeFlipped;
Window.Current.Content = new MainPage();
Window.Current.Activate();
}
Now what do I use?
• Resize
– Window events…you will still get them
• Layout
– View “state” changes: FullScreen, Filled, Snapped
• Orientation
– Portrait  Landscape changes
And do you still remember our good friend,
the VisualStateManager?
(Yes you do, remember you need to earn that badge!)
VisualStateManager
• VSM can be used in combination with layout
• A VisualState for a layout
– FullScreen (this is ‘normal’ and Landscape)
– Filled
– Snapped
– Portrait
• VisualStateManager.GoToState() helps easy
switching
DEMO
GENERAL XAML STUFF
FOR WINDOWS 8
Congratulations,
you earned a badge!
General XAML for Windows 8
OLD AND NEW CONTROLS
Controls
• Most “old” XAML controls are still supported:
– Same control model supported in Silverlight, WP7 and
WPF
– Same properties (mostly)
– Animations, Visual State Manager (VSM) and Parts
model
• We’ll see VSM again later
– Content and item controls still exist, new ones have
been added
– Updated to support both touch and mouse
• PointerXXX events
– Styled with a Windows 8 style
• Similar to WP7 default styles
Most old controls made the transfer to Windows 8...
DEMO
THE “GOLDEN OLDIES” IN
WINDOWS 8
Some are new and shiny!
Or perhaps not that new...
Some of the new controls
• MediaPlayer
• ToggleSwitch
• ProgressRing
Hello WP7 ApplicationBar
(close enough)
• Contains UI for app commands
– Replaces your typical menus and toolbars
• Persistent, light dismiss or time dismiss
• Swipe in from top/bottom to display
DEMO
THE “NEW CONTROLS ON THE
BLOCK”
And then there were collections...
Collections are everywhere, also in Windows 8...
New XAML list controls that work almost identically
to “old” ones have been added in Windows 8.
New XAML List controls
• ListView
• GridView
– Supports grouping
• Semantic zoom (JumpViewer)
• FlipView
• They support new selection models
– Single
– Multiple
– Grouping
Just use them as you would today.
ListView
• Like a ListBox, but optimized for Windows 8
• Supports virtualization
• Often handy in snapped view
Interaction model
• IsItemClickEnabled
• ItemClick event
• SelectionMode
DEMO
CHANGE LISTBOX INTO LISTVIEW
GridView
• Allows creation of grid-based layouts
• Supports grouping of items (next slide)
• Has WrapGrid or VariableSizedWrapGrid
GRouping in the GRidview
• Group content by natural ordering of lists
– Needs to be done by the developer, control
doesn’t know on what it should group
• Visually appealing headers that fit in with
Metro style UI
DEMO
GRIDVIEW AND GROUPING
Semantic zoom
<JumpViewer>
<JumpViewer.ContentView>
...
//some xaml here
...
</JumpViewer.ContentView>
<JumpViewer.JumpView>
...
//some more xaml here
...
</JumpViewer.JumpView>
</JumpViewer>
DEMO
SEMANTIC ZOOM
Congratulations,
you earned a badge!
Be in Control with Windows 8
FINDING YOUR WAY WITH NAVIGATION
Same concepts as Silverlight and WP7
• Frame
– Top-level container control
– Contains the page control
• Page
– Fills the entire content region of the frame
– Can navigate to other pages within frame
– Pages can share data...(!!!)
Navigation APIs are similar
• Windows.UI.Xaml.Navigation
–
–
–
–
–
NavigationCacheMode
NavigationMode
NavigationFailed
NavigationStopped
LoadCompleted
• Frame
–
–
–
–
GoBack()
GoForward()
Navigate()
Source
• Page
– OnNavigateFrom
– OnNavigateTo
– Frame
Frames and pages in Windows 8
• Frame control represents the navigation
container
– Always accessible via this.Frame
• NavigationService isn’t available
• Page control represents discrete sections of
content
• Share objects/data
between your pages
– This is new!
Page 3
Some new stuff in the navigation area
• Page defines caching behavior on
NavigationCacheMode
• Frame controls navigating history stack
– GoBack()
– GoForward()
– Navigate()
– NavigationMode
Transitions
• Integrate Windows 8 look and feel for
transitions
• Frame supports content transitions
– EntranceThemeTransition
• Other transitions available for different
scenarios
DEMO
NAVIGATION THROUGH
WINDOWS 8
Congratulations,
you earned a badge!
The Navigator
Summary
Look what you already know!
Q&A
THANKS!
Metro and WinRT for the
Silverlight/WPF Developer
SILVERLIGHTSHOW.NET WEBINARS SERIES
GILL CLEEREN, February 2nd 2012
www.snowball.be - gill.cleeren@ordina.be - @gillcleeren
Download