SlideShare a Scribd company logo
1 of 186
Windows 10
Summer DevCamp
Jimmy Engström Jessica Engström
jimmy@apeoholic.se jessica@catoholic.se
@apeoholic @grytlappen
http://windows.Microsoft.com
Om oss
http://windows.Microsoft.com
Om oss
http://windows.Microsoft.com
Coding After Work
www.CodingAfterWork.se
http://windows.Microsoft.com
Agenda
Introduktion
Ett Windows | flera enheter
Data bindningar
Traditionellt | kompilerat
Adaptiv Design & UI
Designspråk | XAML UI
Adaptiv kod
Anpassa koden
Labbar & fri kodning
Testa olika labbar || egna projekt
Introduktion
http://windows.Microsoft.com
Agenda
En plattform
Ett Windows
Massor med enheter
Utvecklarupplevelse
Verktygen
.Net Native
Template 10
http://aka.ms/template10
http://windows.Microsoft.com
Windows Core
Refaktorerad gemensam kärna
En hårdvaruplatform
Universiella hårdvarudrivrutiner
Standard nätverk och I/O
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Desktop
SKU
Phone
SKU
Xbox
SKU
http://windows.Microsoft.com
Windows Core
Refaktorerad gemensam kärna
En hårdvaruplatform
Universiella hårdvarudrivrutiner
Standard nätverk och I/O
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Desktop
SKU
Phone
SKU
Xbox
SKU
http://windows.Microsoft.com
Ett Windows
Desktop
SKU
PC
2 in 1
Mobile
SKU
Tablet
Phablet
Phone
Xbox
SKU
Xbox
IoT
SKU
Band
IoT headless
SKU
Raspberry Pi
Home
Automation
Surface Hub
SKU
Surface Hub
Holographic
SKU
HoloLens
http://windows.Microsoft.com
Ett Windows
Desktop
SKU
PC
2 in 1
Mobile
SKU
Tablet
Phablet
Phone
Xbox
SKU
Xbox
IoT
SKU
Band
IoT headless
SKU
Raspberry Pi
Home
Automation
Surface Hub
SKU
Surface Hub
Holographic
SKU
HoloLens
Varje enhetsfamilj (SKU) lägger till
funktioner
http://windows.Microsoft.com
Easy for users to get
& stay current
Unified core
and app platform
Resan till sammanslagning
Windows Phone 7.5
Windows Phone 8
Windows
Phone 8.1
Windows 8
Xbox One
Windows on Devices
Xbox 360
Windows 8.1
Windows 10
Converged
OS kernel
Converged
app model
http://windows.Microsoft.com
Easy for users to get
& stay current
Unified core
and app platform
Resan till sammanslagning
Windows Phone 7.5
Windows Phone 8
Windows
Phone 8.1
Windows 8
Xbox One
Windows on Devices
Xbox 360
Windows 8.1
Windows 10
Converged
OS kernel
Converged
app model
http://windows.Microsoft.com
Phone Small Tablet
2-in-1s
(Tablet or Laptop)
Desktops
& All-in-OnesPhablet Large Tablet
Classic
Laptop
Xbox IoTSurface Hub Holographic
Windows 10
http://windows.Microsoft.com
En Store +
Ett Dev Center
Återanvänd
existerande
kodEn SDK +
utvecklingsmiljö
Adaptivt
User Interface
Naturliga
Användarinmatningar
En Universell Windows Plattform
http://windows.Microsoft.com
Universal Windows Platform
ETT API-”kontrakt”
En garanterad samling av kontrakt
Samma på alla enheter
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Universal Windows Platform
http://windows.Microsoft.com
<TargetPlatform
Name="Microsoft.Universal"
minVersion="10.0.10069.0"
maxVersionTested="10.0.10190.0"/>
Universella Windows-plattformen
kan uppdatera i egen takt
http://windows.Microsoft.com
Windows app
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Universal Windows Platform
Windows App
http://windows.Microsoft.com
Windows app
En binär
Kan köra på alla enheter
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Universal Windows Platform
Windows App
http://windows.Microsoft.com
Utvecklarupplevelse
iOS,
iPhone & iPad
Android,
Enheter som har stöd
Windows 8,
Respektive enhet (telefon & dator)
Windows 10
Alla enheter
DEMO
2:05
Hello devices
http://windows.Microsoft.com
Plattformstillägg
Enhetsspecifika API
Familje-specifika funktioner
Kompatibla över alla enheter
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Universal Windows Platform
Windows App
Phone
extension
Xbox
extension
Desktop
extension
Tillägg gör inte att binären slutar
fungera på andra enheter
Traditionell Microsoft teknologi är
inte det enda sättet att skapa
Windows appar
http://windows.Microsoft.com
Windows 10
operativsystem
C++
.Net
languages
MFCWFWPF
.Net
runtime
http://windows.Microsoft.com
Windows 10
operativsystem
Universal Windows Platform
WWAC++
& CX
.Net
languages
HTML
DirectX
XAML
C++
.Net
languages
MFCWFWPF
.Net
runtime
http://windows.Microsoft.com
Windows 10
operativsystem
Bridging technologies
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWAC++
& CX
.Net
languages
HTML
DirectX
XAML
C++
.Net
languages
MFCWFWPF
.Net
runtime
http://windows.Microsoft.com
Windows 10
operativsystem
Bridging technologies
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWAC++
& CX
.Net
languages
HTML
DirectX
XAML
C++
.Net
languages
MFCWFWPF
.Net
runtime
Bridges kommer att få fler appar
till Windows Plattformen
http://windows.Microsoft.com
Adaptiv design
Responsiv design
Flexibel layout som reagerar på små ändringar
Många kontroller hanterar responsivitet automatiskt
http://windows.Microsoft.com
Adaptiv design
Responsiv design
Flexibel layout som reagerar på små ändringar
Många kontroller hanterar responsivitet automatiskt
Adaptiv design
Smart layout som reagerar på stora förändringar
Använd Visual states
Skräddarsydd design
Enhetsspecifik design
Vissa enheter har ett specifikt designspråk
http://windows.Microsoft.com
Continuum for Convertibles and PhonesContinuum
http://windows.Microsoft.com
Adaptiv kod
En kompatibel binär för olika enheter
Universiellt api med enhetsspecifik kod
Ändra din app baserat på egenskaper
Fråga om din app har stöd för funktioner och namespaces
En enkel, enad utvecklingmiljö
http://windows.Microsoft.com
Visual Studio IDE
Alla projekttyper
Desktop, Windows, Telefon, Service, Webb, Spel, m.m…
Alla utvecklaruppgifter
Editera kod, Arikitekt design, UX design, Debug, Profilering, Utvärdering, Test, m.m…
Alla språk
C++/CX, C#, Visual Basic, JavaScript, XAML, HTML, m.m…
Visual Studio Online
Källkodshantering, projekthantering, spåra buggar, m.m…
http://windows.Microsoft.com
Blend för Visual Studio
XAML utvecklingmiljö
Alltid en del av Visual studio
Använder Visual studio-skal
Full auto-complete & intellisense
• Validation
• Snippets
• Peek
Fil & solution-managering
Resurs-managering
Data-managering
Animationer
States
http://windows.Microsoft.com
Visual Studio 2015 versioner
Enterprise
arkitektmodelering, Diagnostics, VSO/ALM & Release Management
Professional
Architecture Validation, VSO/ALM & Feedback Management
Community Editions
Visual Studio Professional Edition
http://windows.Microsoft.com
Developer unlock
http://windows.Microsoft.com
Uteckla var?
Windows 10
Kräver Visual Studio 2015
Windows 8.1 & Windows Server 2012 R2
Visual studio designer fungerar inte
Debugging kräver en Windows 10 enhet eller Remote Debugging-verktyg
Managed språk är bättre än
någonsin
http://windows.Microsoft.com
.NET Native
Nästa generation kompilator i molnet
Alla windows appar, endast Windows appar (just nu)
Appar avänder sig av standrard C++ optimering
.Net natives prestanda förbättras i takt med C++ optimizer
Appar med .Net bootstrapper
Inkluderar garbage collection
Ingen runtime
Detta är maskinkod
Alla Windows appar kommer bli
kompilerade till .Net Native
http://windows.Microsoft.com
Uppsidorna med .Net Native
50% snabbare uppstartstid
14% mindre minne
http://windows.Microsoft.com
“Template 10”
Ny tom mall
Innehåller få filer och tomma mappar för att hjälpa till med konventioner
Liknar MVC-mallen
Tillägg kommer att lösa vanliga problem
Löser 90%
Koden löser 90% av alla användarfall
Levereras med Windows 10
Mallen finns på Github och är under konstruktion
Bidra till Template10
http://aka.ms/template10
http://windows.Microsoft.com
Summering
En plattform
Ett Windows
Flera olika enheter
Utvecklarupplevelse
Windows verktyg
.Net Native
Template 10
http://aka.ms/template10
http://windows.Microsoft.com
Databindningar
http://windows.Microsoft.com
Agenda
Klassiska bindningar
Kompilerade bindingar
http://windows.Microsoft.com
Strängar
http://windows.Microsoft.com
Dynamisk Data
Använd databindningar för att hämta dynamisk
data
http://windows.Microsoft.com
Dynamisk Data
Använd databindningar för att hämta dynamisk
data
http://windows.Microsoft.com
Uppdatera gränssnittet
INotifyPropertyChanged
Implementera i en vymodell
Körs på en vymodell om en egenskap förändras
INotifyCollectionChanged
Implementeras i ObservableCollection<T> och ReadOnlyObservableCollection<T>
Körs när en kollektion förändras.
http://windows.Microsoft.com
Syntax
<TextBox Text="{Binding
Converter
ConverterLanguage
ConverterParameter
http://windows.Microsoft.com
Syntax
<TextBox Text="{Binding
Converter
ConverterLanguage
ConverterParameter
ElementName
FallbackValue
Mode
(OneTime,OneWay,TwoWay)
http://windows.Microsoft.com
Syntax
<TextBox Text="{Binding
Converter
ConverterLanguage
ConverterParameter
ElementName
FallbackValue
Mode
(OneTime,OneWay,TwoWay)
UpdateSourceTrigger
(Explicit,Default,
PropertyChanged )
}
DEMO
Klassisk binding
Kompilerad binding
http://windows.Microsoft.com
Klassisk
Binding
Kompilerad
Binding
http://windows.Microsoft.com
x:Bind
Kompilerad binding
Bindingar kompileras
Starkt typade bindingar
Duck-binding stöds inte
Standard är OneTime
OneWay och TwoWay finns fortfarande
Standard bindingssätt
INotifyPropertyChanged, IObservableVector, INotifyCollectionChanged
Data context för x:Bind
är den bakomliggande koden
http://windows.Microsoft.com
Syntax
<TextBox Text="{Binding
Converter
ConverterLanguage
ConverterParameter
ElementName
FallbackValue
Mode
Path
RelativeSource
Source
TargetNullValue
UpdateSourceTrigger}
<TextBox Text="{x:Bind
Converter
ConverterLanguage
ConverterParameter
ElementName
FallbackValue
Mode
Path
RelativeSource
Source
TargetNullValue
UpdateSourceTrigger}
http://windows.Microsoft.com
Syntax skillnader
public HeroViewModel ViewModel { get; set; }
public HeroView()
{
this.InitializeComponent();
this.DataContextChanged += HeroView_DataContextChanged;
}
private void HeroView_DataContextChanged(FrameworkElement sender,
DataContextChangedEventArgs args)
{
ViewModel = (HeroViewModel)this.DataContext;
}
http://windows.Microsoft.com
Syntax skillnader
<GridView ItemsSource="{Binding Heros}">
<GridView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding AlterEgoName}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView ItemsSource="{x:Bind ViewModel.Heros}" xmlns:m="using:BindingDemo.Models">
<GridView.ItemTemplate>
<DataTemplate x:DataType="m:Hero">
<TextBlock Text="{x:Bind AlterEgoName}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
http://windows.Microsoft.com
Syntax skillnader
<GridView ItemsSource="{Binding Heros}">
<GridView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding AlterEgoName}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView ItemsSource="{x:Bind ViewModel.Heros}" xmlns:m="using:BindingDemo.Models">
<GridView.ItemTemplate>
<DataTemplate x:DataType="m:Hero">
<TextBlock Text="{x:Bind AlterEgoName}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
http://windows.Microsoft.com
Syntax skillnader
<GridView ItemsSource="{Binding Heros}">
<GridView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding AlterEgoName}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<GridView ItemsSource="{x:Bind ViewModel.Heros}" xmlns:m="using:BindingDemo.Models">
<GridView.ItemTemplate>
<DataTemplate x:DataType="m:Hero">
<TextBlock Text="{x:Bind AlterEgoName}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
http://windows.Microsoft.com
ResourceDictionary
<ResourceDictionary
x:Class="MyNamespace.MyTemplates"
xmlns:model="using:xBindSampleModel">
<DataTemplate
x:Key="MyTemplate"
x:DataType="model:Employee">
<TextBlock Text="{x:Bind Name}" />
</DataTemplate>
</ResourceDictionary>
namespace MyNamespace
{
public class MyTemplates
{
public MyTemplates()
{
InitializeComponent();
}
}
}
http://windows.Microsoft.com
Referera till en Dictionary
</UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<local:MyTemplates/>
<ResourceDictionary Source="filename" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Använd Bindings.Update()
för asynkron data
http://windows.Microsoft.com
Bindning för händelser
<Button Click="PokeEmployee“/>Poke Emplo
<Button Click="{x:Bind ViewModel.Poke}“/>Poke Employee
Signatur
Utan parametrar- void Poke()
Matcha eventparametrar - void Poke(object sender, RoutedEventArgs e)
Alla event går att använda:
Kan ersätta ICommand & EventToCommand
Notera: Inkluderar inte parmetrar eller CanExecute
Bindings.StopTracking()
pausar kompilerad bindning
http://windows.Microsoft.com
Vanliga frågeställningar
RelativeSource = Self & ElementName
Referera element med namn Text="{x:Bind MyElement.Text}"
UpdateSourceTrigger = PropertyChanged
Det finns inte UpdateSourceTrigger med x:Bind
Source / DataContext
Lägg till en Viewmodel i din code-behind
{x:Bind} är inte för alla lägen (än)
http://windows.Microsoft.com
När använder man klassisk binding?
Duck Typing
Text=“{Binding Age}” fungerar för både PersonModel & WineModel
Otypat
Använd {Binding} med JSON eller andra otypade objekt
Code-behind binding
Kan inte lägga till eller ta bort {x:Bind} vid körning
Använd i style
{x:Bind} Kan inte användas vid Style-setters
{x:Bind} Kan användas i en DataTemplate som är definerad i en style
x:Bind Kan användas i de flesta fall
http://windows.Microsoft.com
Summering
Klassisk binding
Kompilerad binding
Q & A
http://windows.Microsoft.com
Vi fortsätter strax med Adaptiv Design & UI
Adaptiv design & UI
http://windows.Microsoft.com
Agenda
Microsoft design language
Adaptiv design
Designupplägg
Adaptiva verktyg
Microsoft Designspråk
http://windows.Microsoft.com
Microsoft designspråk principer
Keep it Simple
http://windows.Microsoft.com
Microsoft designspråk principer
Keep it Simple
Think Universal
http://windows.Microsoft.com
Microsoft designspråk principer
Keep it Simple
Think Universal
Design as One
http://windows.Microsoft.com
Microsoft designspråk principer
Keep it Simple
Think Universal
Design as One
Make it Personal
http://windows.Microsoft.com
Microsoft designspråk principer
Keep it Simple
Think Universal
Design as One
Make it Personal
Create Delight
http://windows.Microsoft.com
Microsoft designspråk principer
Keep it Simple
Think Universal
Design as One
Make it Personal
Create Delight
http://windows.Microsoft.com
Typeography
För text, använder vi mest
15 epx Segoe UI Regular
http://windows.Microsoft.com
2px
Iconography
Minimera tomrum mellan element
http://windows.Microsoft.com
Fyra är ett magiskt nummer
http://windows.Microsoft.com
Färgramper
http://windows.Microsoft.com
Färgramper
Adaptiv design
http://windows.Microsoft.com
Tre sätt att anpassa
Responsiv design
Ändra storlek på ditt innehåll
Ändra flöde på ditt innehåll
http://windows.Microsoft.com
Tre sätt att anpassa
Responsiv design
Ändra storlek på ditt innehåll
Ändra flöde på ditt innehåll
Adaptiv design
Positionera om ditt innehåll
Designa om ditt innehåll
http://windows.Microsoft.com
Tre sätt att anpassa
Responsiv design
Ändra storlek på ditt innehåll
Ändra flöde på ditt innehåll
Adaptiv design
Positionera om ditt innehåll
Designa om ditt innehåll
Skräddarsydd design
http://windows.Microsoft.com
Ändra storlek
http://windows.Microsoft.com
Ändra flöde
http://windows.Microsoft.com
Ändra position
http://windows.Microsoft.com
Ändra design
http://windows.Microsoft.com
Adaptiv design
Phone (portrait)
Tablet (landscape) / Desktop
http://windows.Microsoft.com
Skräddarsydd design
Bygg sidor/kod för respektive enhets-familj
Gränsnitt för en hand?
if (physical_diagonal_size <= 7)
// optimized for one-handed operation
rootFrame.Navigate(typeof(MainPage_OneHanded), e.Arguments);
else
rootFrame.Navigate(typeof(MainPage), e.Arguments);
http://windows.Microsoft.com
Skräddarsydd design
Bygg sidor/kod för respektive enhets-familj
Gränsnitt för en hand?
if (physical_diagonal_size <= 7)
// optimized for one-handed operation
rootFrame.Navigate(typeof(MainPage_OneHanded), e.Arguments);
else
rootFrame.Navigate(typeof(MainPage), e.Arguments);
http://windows.Microsoft.com
Skräddarsydd design
Phone (portrait)
Tablet (landscape) / Desktop
Kombinera teknikerna för just din
design
http://windows.Microsoft.com
http://windows.Microsoft.com
Adaptiva kontroller
http://windows.Microsoft.com
Intelligent input
http://windows.Microsoft.com
Skalningsalgoritm
http://windows.Microsoft.com
Skalningsalgoritm
http://windows.Microsoft.com
http://windows.Microsoft.com
http://windows.Microsoft.com
http://windows.Microsoft.com
http://windows.Microsoft.com
Fysiska pixlar vs effektiva pixlar
4” Mobil
480x854
5” Mobil
720x1280
6” Mobil
1080x1920
4” Mobil
480x854
5” Mobil
720x1280
6” Mobil
1080x1920
http://windows.Microsoft.com
Fysiska pixlar vs effektiva pixlar
4” Mobil
480x854
5” Mobil
720x1280
6” Mobil
1080x1920
4” Mobil
480x854
5” Mobil
720x1280
6” Mobil
1080x1920
http://windows.Microsoft.com
Effektiv pixel
Effektiv PixelFysisk Pixel
Ignorera skalning, upplösning, &
dpi.
Designa med Effektiva Pixlar
Designupplägg
http://windows.Microsoft.com
Planera din design
Mobiler
Läsavstånd: 16.3”
Plattor och 2-i-1
Läsavstånd :
20”
Små och stora Laptoppar
Läsavstånd :
24.5”
Små och stora stationära bildskärmar
Läsavstånd :
28”
TV
Läsavstånd :
84”
5” 8” 13”
http://windows.Microsoft.com
Planera din design
Mobiler
Läsavstånd: 16.3”
Plattor och 2-i-1
Läsavstånd :
20”
Små och stora Laptoppar
Läsavstånd :
24.5”
Små och stora stationära bildskärmar
Läsavstånd :
28”
TV
Läsavstånd :
84”
5” 8” 13”
http://windows.Microsoft.com
Planera din design
Mobiler
Läsavstånd: 16.3”
Plattor och 2-i-1
Läsavstånd :
20”
Små och stora Laptoppar
Läsavstånd :
24.5”
Små och stora stationära bildskärmar
Läsavstånd :
28”
TV
Läsavstånd :
84”
5” 8” 13”
http://windows.Microsoft.com
Brytpunkter
phablet &
platta
stationär
pc
telefon
• Begränsatstödförlandscape
• En“frame”itaget
• Systemfältettillvänster
• Steeringwheelontheright
• 4+kommandonlängstner
• Flikarcentrerade
• Begränsatstödförlandscape
• EnbildrutaItaget
• Systemfältettillvänster
• steeringwheelontheright
• 4+actionslängstner
• Enskildkolumnslutarskala
• Flikarcentrerade
• Fulltstödförlandscape
• Två“frames”
• Kommandonöverst
• “…”visashelatiden-TBD
• Flikarvänsterjusterade
• Visasökfältetomdettidigare
baravarenikonpåenmindre
enhet
• Fulltstödförlandscape
• Tre“frames”
• Kompaktnavigationspanel
• Kommandonöverst
• “…”visashelatiden
• Flikarvänsterjusterade
548 720 1024320epx
http://windows.Microsoft.com
Brytpunkter
phablet &
platta
stationär
pc
telefon
• Begränsatstödförlandscape
• En“frame”itaget
• Systemfältettillvänster
• Steeringwheelontheright
• 4+kommandonlängstner
• Flikarcentrerade
• Begränsatstödförlandscape
• EnbildrutaItaget
• Systemfältettillvänster
• steeringwheelontheright
• 4+actionslängstner
• Enskildkolumnslutarskala
• Flikarcentrerade
• Fulltstödförlandscape
• Två“frames”
• Kommandonöverst
• “…”visashelatiden-TBD
• Flikarvänsterjusterade
• Visasökfältetomdettidigare
baravarenikonpåenmindre
enhet
• Fulltstödförlandscape
• Tre“frames”
• Kompaktnavigationspanel
• Kommandonöverst
• “…”visashelatiden
• Flikarvänsterjusterade
548 720 1024320epx
http://windows.Microsoft.com
Brytpunkter
phablet &
platta
stationär
pc
telefon
• Begränsatstödförlandscape
• En“frame”itaget
• Systemfältettillvänster
• Steeringwheelontheright
• 4+kommandonlängstner
• Flikarcentrerade
• Begränsatstödförlandscape
• EnbildrutaItaget
• Systemfältettillvänster
• steeringwheelontheright
• 4+actionslängstner
• Enskildkolumnslutarskala
• Flikarcentrerade
• Fulltstödförlandscape
• Två“frames”
• Kommandonöverst
• “…”visashelatiden-TBD
• Flikarvänsterjusterade
• Visasökfältetomdettidigare
baravarenikonpåenmindre
enhet
• Fulltstödförlandscape
• Tre“frames”
• Kompaktnavigationspanel
• Kommandonöverst
• “…”visashelatiden
• Flikarvänsterjusterade
548 720 1024320epx
http://windows.Microsoft.com
Flöda, inte storlek
My UI My UI My UI
http://windows.Microsoft.com
Flöda, inte storlek
My UI My UI My UI
My UI
My UI My UI
http://windows.Microsoft.com
Kolla varianter
http://windows.Microsoft.com
Kolla varianter
http://windows.Microsoft.com
När du designar
1. Anpassa till storleksförändringar
2. Anpassa till inputsätt
3. Bygg för effektiva pixlar
4. Räkna med skalningsalgoritmen
Adaptiva verktyg
http://windows.Microsoft.com
Visual States
Definera XAML vyer
Unik layout för specifika states
http://windows.Microsoft.com
Visual States
Definera XAML vyer
Unik layout för specifika states
Förekla animation
Lägg automatiskt till state transitions
Bygg i Blend
Designa och förhandsgranska states och transitions
http://windows.Microsoft.com
Visual States
http://windows.Microsoft.com
Visual States
http://windows.Microsoft.com
Visual States
http://windows.Microsoft.com
Visual States
“Visual states” låter designers
definera flera utseenden på en vy
http://windows.Microsoft.com
Skräddarsydda adaptiva triggers
Bygg för att hantera specialfall.
public class DeviceFamilyTrigger : StateTriggerBase
{
private string _deviceFamily;
public string DeviceFamily
{
get { return _deviceFamily; }
set
{
var qualifiers = Windows.ApplicationModel.Resources.Core
.ResourceContext.GetForCurrentView().QualifierValues;
if (qualifiers.ContainsKey("DeviceFamily"))
SetActive(qualifiers["DeviceFamily"] == (_deviceFamily = value));
else
SetActive(false);
}
}
}
Utvecklare har många verktyg att
bygga ett adaptivt gränssnitt med
http://windows.Microsoft.com
Summering
Microsoft design language
Adaptiv design
Designupplägg
http://windows.Microsoft.com
Summering
Microsoft design language
Adaptiv design
Designupplägg
Adaptiva verktyg
Q & A
http://windows.Microsoft.com
Vi fortsätter strax med Adaptiv kod
Adaptiv Kod
http://windows.Microsoft.com
Agenda
Windows 8.1 en tillbakablick
Plattform Extension SDKs
Adaptiv kod
Adaptiv kod och API Versioner
Delade Projekt
http://windows.Microsoft.com
Vad är Adaptiva Appar?
Windows appar anpassar sig till olika
Plattformsversioner
Enhetstyper
Skärmstorlekar
“Adaptivt UI” hanterar olika skärmar
“Adaptivt kod” kan aktivera din app så den bara kör kod när det kör
på en specifik enhet och/eller specifik version av plattform/enhets
specifika API:er
Tillbakablick på Windows 8.1
http://windows.Microsoft.com
Windows 8.1 Universal
Delad kod, två binärer
Windows
Binary Phone
Binary
http://windows.Microsoft.com
Alla API:er fanns inte överallt
http://windows.Microsoft.com
Compilation directives
C# Syntax
#if WINDOWS_PHONE_APP
Windows.Phone.UI.Input.HardwareButtons.BackPressed +=
HardwareButtons_BackPressed;
#endif
C++ Syntax
#if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP
_backPressedEventToken = HardwareButtons
::BackPressed += ref new EventHandler
<BackPressedEventArgs^> (this,
&NavigationHelper::HardwareButton_BackPressed);
#endif
Blickar framåt till UWP
http://windows.Microsoft.com
Windows universal
Desktop
PC
2 in 1
Mobile
Tablet
Phablet
Phone
Xbox
Xbox
IoT
Band
IoT headless
Raspberry Pi
Home
Automation
Surface Hub
Surface Hub
Holographic
HoloLens
http://windows.Microsoft.com
Universal Windows Platform
EN API-gränsnittsyta
En garanterad gränssnittsyta
Samma på alla enheter
Phone
Device
Xbox
Device
Desktop
Device
Windows Core
Universal Windows Platform
http://windows.Microsoft.com
Enhetsfamilj beroende
Beroende på en enhets familj:
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal"
minVersion="10.0.10069.0" maxVersionTested="10.5.0.0" />
</Dependencies>
Mer än en:
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop"
minVersion="10.0.10069.0" maxVersionTested="10.5.0.0" />
<TargetDeviceFamily Name="Windows.Universal"
minVersion="10.0.10069.0" maxVersionTested="10.5.0.0" />
</Dependencies>
Platform Extension SDKs
http://windows.Microsoft.com
Adding extensions
http://windows.Microsoft.com
Extension SDKs
Desktop Mobile Xbox More…
http://windows.Microsoft.com
Extension SDKs
UWP
Windows Core Windows Core Windows Core Windows Core
UWP UWP UWP
Desktop Mobile Xbox More…
http://windows.Microsoft.com
Extension SDKs
UWP
Windows Core Windows Core Windows Core Windows Core
UWP UWP UWP
Desktop Mobile Xbox More…
http://windows.Microsoft.com
Testing for capabilities
IsApiContractPresent
IsEnumNamedValuePresent
IsEventPresent
IsMethodPresent
IsPropertyPresent
IsReadOnlyPropertyPresent
IsTypePresent
IsWriteablePropertyPresent
Windows.Foundation.Metadata.ApiInformation
http://windows.Microsoft.com
Test capabilities at runtime
var api = "Windows.Phone.UI.Input.HardwareButtons";
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(api))
{
Windows.Phone.UI.Input.HardwareButtons.CameraPressed
+= CameraButtonPressed;
}
ApiInformation API:t testar
efter egenskaper vid körning.
http://windows.Microsoft.com
Vilka Extension SDKs behöver jag?
Många appar behöver inte Extension SDK alls
Använd Extension SDKs för att utmärka din app när
den kör på en specifik enhets-familj
http://windows.Microsoft.com
Vilka Extension SDKs behöver jag?
Många appar behöver inte Extension SDK alls
Använd Extension SDKs för att utmärka din app när
den kör på en specifik enhets-familj
http://windows.Microsoft.com
Hantera back utan extension
SystemNavigationManager.GetForCurrentView().BackRequested
http://windows.Microsoft.com
Identifiera Extension SDK
MSDN docs:
http://windows.Microsoft.com
Utforska API Kontrakt
De enhets-familjer du väljer avgör
vilka api:er du kan använda
Adaptiv kod och API versioner
http://windows.Microsoft.com
Använd en specifik version av ett API
Adaptiv kod, inte bara för att hantera enhetsfamilj-
specifik kod
Skriv din kod mot en bas UWP version
Hantera uppdateringar
http://windows.Microsoft.com
Användning av uppdaterade API:er
var contract = "Devices.Scanners.ScannerDeviceContract";
int majorVersionRequired = 3;
if (Windows.Foundation.Metadata.ApiInformation.
IsApiContractPresent(contract, majorVersionRequired ))
{
// Call the API that is present in V3 and above
...
}
else
{
// Your original code supporting users who haven’t upgraded yet
...
}
Men delade projekt då?
http://windows.Microsoft.com
Men delade projekt då?
http://windows.Microsoft.com
Men delade projekt då?
Delade projekt delar kod och
använder pre-compilation
#IF
1. WINDOWS_APP
2. WINDOWS_PHONE_APP
3. WINDOWS_UAP (ny)
4. WINDOWS_UWP?
http://windows.Microsoft.com
Använd adaptiv kod i delade projekt!
#if WINDOWS_PHONE_APP
// Processing for Windows Phone 8.1 only
Windows.Phone.UI.Input.HardwareButtons.CameraPressed
+= this.Camera_Pressed;
#elif WINDOWS_UAP
// Processing for Windows UWP – Desktop AND Mobile
if (Windows.Foundation.Metadata.ApiInformation
.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons";))
{
// But this is only for UWP AND Mobile
Windows.Phone.UI.Input.HardwareButtons.CameraPressed
+= this.Camera_Pressed;
}
#endif
http://windows.Microsoft.com
Summering
Windows 8.1 tillbakablick
Platform Extension SDKs
Adaptiv Kod
Adaptiv kod och API Versioner
Delade Projekt
Q & A
http://windows.Microsoft.com
Microsoft Developer Network
Dokumentation
http://msdn.Microsoft.com
http://dev.Windows.com
Övningskurser
http://msevents.Microsoft.com
http://MicrosoftVirtualAcademy.com
http://windows.Microsoft.com
Summering
Introduktion
Data bindningar
Adaptiv Design & UI
Adaptiv kod
Windows 10
Summer DevCamp
Jimmy Engström Jessica Engström
jimmy@apeoholic.se Jessica@catoholic.se
@apeoholic @grytlappen
Labbtajm!

More Related Content

Similar to Win10 summer dev camp

CV Johan Kempe Details
CV Johan Kempe DetailsCV Johan Kempe Details
CV Johan Kempe DetailsJohan Kempe
 
Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln Creuna Sverige
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältarPer Åström
 
TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06Solidify
 
Webbutveckling med den lilla avdelningen
Webbutveckling med den lilla avdelningenWebbutveckling med den lilla avdelningen
Webbutveckling med den lilla avdelningenPer Åström
 
TV4 Teknikutveckling hos Telia
TV4 Teknikutveckling hos TeliaTV4 Teknikutveckling hos Telia
TV4 Teknikutveckling hos TeliaPer Åström
 
HT19 - DA156A - Introduktion till JavaScript
HT19 - DA156A - Introduktion till JavaScriptHT19 - DA156A - Introduktion till JavaScript
HT19 - DA156A - Introduktion till JavaScriptAnton Tibblin
 
HT18 - DA156A - Webben och JavaScript
HT18 - DA156A - Webben och JavaScriptHT18 - DA156A - Webben och JavaScript
HT18 - DA156A - Webben och JavaScriptAnton Tibblin
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklareThomas Adrian
 
HT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutvecklingHT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutvecklingAnton Tibblin
 
Välj rätt i teknikdjungeln - Del 1: CMS och webbramverk
Välj rätt i teknikdjungeln - Del 1: CMS och webbramverkVälj rätt i teknikdjungeln - Del 1: CMS och webbramverk
Välj rätt i teknikdjungeln - Del 1: CMS och webbramverkCreuna Sverige
 
Ravendb@swedenprogressive
Ravendb@swedenprogressiveRavendb@swedenprogressive
Ravendb@swedenprogressiveMikael Östberg
 
Solidify continuous delivery 2014
Solidify   continuous delivery 2014Solidify   continuous delivery 2014
Solidify continuous delivery 2014Solidify
 
Foss-sthlm inbyggd opensource
Foss-sthlm inbyggd opensourceFoss-sthlm inbyggd opensource
Foss-sthlm inbyggd opensourceDaniel Stenberg
 
Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)Per Åström
 
VT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverkVT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverkAnton Tibblin
 

Similar to Win10 summer dev camp (20)

Wordpress och Open Sorce
Wordpress och Open SorceWordpress och Open Sorce
Wordpress och Open Sorce
 
CV Johan Kempe Details
CV Johan Kempe DetailsCV Johan Kempe Details
CV Johan Kempe Details
 
Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältar
 
TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06
 
Webbutveckling med den lilla avdelningen
Webbutveckling med den lilla avdelningenWebbutveckling med den lilla avdelningen
Webbutveckling med den lilla avdelningen
 
TV4 Teknikutveckling hos Telia
TV4 Teknikutveckling hos TeliaTV4 Teknikutveckling hos Telia
TV4 Teknikutveckling hos Telia
 
HT19 - DA156A - Introduktion till JavaScript
HT19 - DA156A - Introduktion till JavaScriptHT19 - DA156A - Introduktion till JavaScript
HT19 - DA156A - Introduktion till JavaScript
 
HT18 - DA156A - Webben och JavaScript
HT18 - DA156A - Webben och JavaScriptHT18 - DA156A - Webben och JavaScript
HT18 - DA156A - Webben och JavaScript
 
Uppgift6 med anteck
Uppgift6 med anteckUppgift6 med anteck
Uppgift6 med anteck
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklare
 
Viktigt om photoshop cs5
Viktigt om photoshop cs5Viktigt om photoshop cs5
Viktigt om photoshop cs5
 
HT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutvecklingHT17 - DA156A - JavaScript i webbutveckling
HT17 - DA156A - JavaScript i webbutveckling
 
Välj rätt i teknikdjungeln - Del 1: CMS och webbramverk
Välj rätt i teknikdjungeln - Del 1: CMS och webbramverkVälj rätt i teknikdjungeln - Del 1: CMS och webbramverk
Välj rätt i teknikdjungeln - Del 1: CMS och webbramverk
 
Ravendb@swedenprogressive
Ravendb@swedenprogressiveRavendb@swedenprogressive
Ravendb@swedenprogressive
 
Solidify continuous delivery 2014
Solidify   continuous delivery 2014Solidify   continuous delivery 2014
Solidify continuous delivery 2014
 
Foss-sthlm inbyggd opensource
Foss-sthlm inbyggd opensourceFoss-sthlm inbyggd opensource
Foss-sthlm inbyggd opensource
 
Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)Varje resa börjar med ett litet steg (internetdagarna 2011)
Varje resa börjar med ett litet steg (internetdagarna 2011)
 
WebAppsFTW
WebAppsFTWWebAppsFTW
WebAppsFTW
 
VT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverkVT2019 - DA355A - JS-ramverk
VT2019 - DA355A - JS-ramverk
 

Win10 summer dev camp