Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in...

33
Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann (www.eoa.de)

Transcript of Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in...

Page 1: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Der Design-Workflow für Silverlight in der Praxis

Sascha Wolter (ww.wolter.biz)André Engelmann (www.eoa.de)

Page 2: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

In eigener Sache

Sascha Wolter (www.wolter.biz) ist Entwickler und Architekt für Rich Applications mit den Schwerpunkten Flash/Flex Plattform und Silverlight.

André Engelmann (www.eoa.de) ist Gestalter und Illustrator für Rich Applications mit Schwerpunkt auf Flash.

Page 3: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Inhalt

Motivation Designer Developer

Workflow Prototyping und

Styleguide Business und Bindungen Integration

Page 4: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Motivation

Page 5: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Silverlight, warum nicht?

Neugierde Designer Developer

Workflow Verstehen, Lernen und

Bewerten Anforderungen und

Ressourcen

Page 6: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Designer Developer Workflow

Page 7: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

XAMLeXtensible Application Markup

Language

Gemeinsamkeiten

Page 8: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Gemeinsames Projektformat

Grafische Inhalte mit Expression Design

Segmente XAML versus Bitmaps

Werkzeuge

Page 9: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Workflow

Page 10: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Medienintegration

Animation Tipp: x: Name versus „Property Path“

Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">

Storyboard.TargetName="scaleTransform„Storyboard.TargetProperty="ScaleX"

Video mit Expression Encoder Sound „Microsoft, MAKE SOME NOISE“: Loops, Lower Level API

Eingebettet versus Extern Build Action „Resource“ und „None“ (Copy if newer)

Page 11: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Prototyping

Page 12: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Phasen

Konzept Planung Struktur

Design/ Umsetzung

Page 13: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Mock-up

Views Page Switcher Controller

Chamber.png

Chamber.xaml

<Image...<Button...

Page 14: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Page Switcher, XAML

<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"x:Class="Isidor.Page"Width="Auto" Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">

<Border x:Name="LayoutRoot" Background="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

</UserControl>

Page 15: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Page Switcher, C#

public partial class Page : UserControl {...public void ShowEntrance(){

LayoutRoot.Child = new Entrance();}...

public partial class Entrance : UserControl {...private void ShowHall_click(object sender,

RoutedEventArgs e){

((Parent as Border).Parent as Page).ShowHall();}...

Page 16: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Styleguide

App Resources versus UserControl Resources Farben, Größen und noch viel mehr…

Styles Templates Data Templates Theme (generic.xaml)

Page 17: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Controls, C#

namespace IsidorApplication.Controls{

public class BookDefaultButton : Button{

public BookDefaultButton(){

this.DefaultStyleKey = typeof(BookDefaultButton);}

}}

Page 18: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Controls, Theme

<Style TargetType="controls:BookDefaultButton"><Setter Property="Foreground" Value="{StaticResource IsidorStandard}" /><Setter Property="Cursor" Value="Hand"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button">

<Grid VerticalAlignment="Center"><Image HorizontalAlignment="Right"

VerticalAlignment="Top" /><ContentPresenter

HorizontalAlignment="{TemplateBindingHorizontalContentAlignment}"

</Grid></ControlTemplate>...

Page 19: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Business und Bindungen

Page 20: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Architektur

Modell Anwendungsdaten (nicht vergessen: Rich Application)

View XAML Trennung von Design und Code Raus geht es durch Ereignisse Rein geht es durch Bindungen

Controller Code-Behind delegiert Controller ist Singleton, weil… Business im Controller

Page 21: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Bindungen

Modell Explizit oder Implizit durch DataContext

Bindbar machen INotifyPropertyChanged ObservableCollection

Binding Einfach binden bis hin zu IValueConverter

Services ADO.NET und WCF

Page 22: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Bindung, Interface

public class IsidorModel : INotifyPropertyChanged{

...public event PropertyChangedEventHandler PropertyChanged;...

Page 23: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Bindung, Property

public class IsidorModel : INotifyPropertyChanged{

...private User _currentUser = null;public User CurrentUser{get { return _currentUser; }set{

_currentUser = value;//Call NotifyPropertyChanged//when the source property is updatedNotifyPropertyChanged("CurrentUser");

}}...

Page 24: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: Bindung, Event

...public event PropertyChangedEventHandler PropertyChanged;

//NotifyPropertyChanged will raise the PropertyChanged//event passing the source property that is being updated.private void NotifyPropertyChanged(string propertyName){if (PropertyChanged != null){

PropertyChanged(this, newPropertyChangedEventArgs(propertyName));

}}...

Page 25: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Bindungen nutzen

<ContentControlx:Name="ContentHolder" IsEnabled="{Binding CurrentContentEnabled}" Content="{Binding CurrentContent}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"

/>

<TextBox x:Name="txtLastname"Style="{StaticResource BookTextBoxStyle}„Width="200" Height="30" Margin="0,0,0,5" Text="{Binding Mode=OneWay, Path=CurrentUser.Lastname}" TextWrapping="Wrap"HorizontalAlignment="Center" VerticalAlignment="Center"

/>

Page 26: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Code-Snippet: IValueConverter

public class NullConverter : IValueConverter {public object Convert(object value, Type targetType, object

parameter, System.Globalization.CultureInfo culture) {if (value == null) {

return 0;} else {

return value;}

}public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){

…}

}

Page 27: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Bindungen konvertieren

<UserControl.Resources><model:NullConverter x:Key="nullConverter" />

</UserControl.Resources>

<TextBlockx:Name="CandleCountBlock" Text="{Binding Mode=OneWay, Path=CurrentUser.CandleInStock,Converter={StaticResource nullConverter}}" TextWrapping="Wrap" HorizontalAlignment="Center„ VerticalAlignment="Center" Style="{StaticResource IsidorEmphasizedTextStyle}" Foreground="#FFFBFAF7" Margin="0,30,0,0„

/>

Page 28: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Bindungen selbstgemacht

Nutzbar bei eigenen Komponenten Für Styles, Bindungen und Animationen Voraussetzung für Bindungen: Dependency Property Positiver Nebeneffekt: Nutzbar als XAML Attribut Klasse muss von DependencyObject abgeleitet sein Code-Snippet macht es leichter Ausblick: Attached Property wie Canvas.Left

Page 29: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Integration

Page 30: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Create Distribute Experience

Expression Media Encoder for publishing

with Silverlight

Expression Blend for creating media

experiences

+ Existing ecosystem of WMV technology partners / solution

providers

Up to 2x streaming scalability over

Windows Server 2003

New Secure content delivery over SSL and Cache/Proxy support

New IIS7 Media Pack with bit-rate throttling

for lower cost for downloaded media

Interactivity, video, and animation in browser

and/or full screen

Seamless, Fast Installation for End

Users

Consistent experience on Mac and Windows

Integration: Ecosystem

Page 31: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Web.config Nur ein paar Pfade

Preloader (oder SplashScreen) Silverlight 1, aber nicht nur!

Integration: Feinschliff

Page 32: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Fragen?

Page 33: Der Design-Workflow für Silverlight in der Praxis€¦ · Der Design-Workflow für Silverlight in der Praxis Sascha Wolter (ww.wolter.biz) André Engelmann ()

Danke für Ihre Geduld.

Sascha Wolter (ww.wolter.biz)André Engelmann (www.eoa.de)