60
#helloWindows10 Hel10 Windows 10!

Windows 10: Hel10 World! - Novedades XAML

Embed Size (px)

Citation preview

Page 1: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Hel10 Windows 10!

Page 2: Windows 10: Hel10 World! - Novedades XAML

Hola a todos

Hola futuro!

Page 3: Windows 10: Hel10 World! - Novedades XAML
Page 4: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Javier Suárez RuizWindows Platform Development MVP / Software Developer Plain [email protected] / @jsuarezruiz

Novedades en XAML

Page 5: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Novedades en ControlesSplitView

Ink Canvas

Relative Panel

Controles convergentes

Novedades en XAMLAdaptiveTriggers

x:Bind

x:Phase

X:DeferLoadStrategy

Otras novedades

HerramientasVisual Tree Inspector

Visual Property Editor

Agenda

Page 6: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Windows Platform Development MVP

Software Developer Plain Concepts

• Blog: http://geeks.ms/blogs/jsuarez

• Email: [email protected]

• Twitter: @jsuarezruiz

Page 7: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Novedades en Controles

Page 8: Windows 10: Hel10 World! - Novedades XAML

SplitView

Page 9: Windows 10: Hel10 World! - Novedades XAML
Page 10: Windows 10: Hel10 World! - Novedades XAML

<SplitViewDisplayMode="Inline|Overlay|CompactInline|CompactOverlay">

<SplitView.Pane>

<!-- Navigation Content Here -->

</SplitView.Pane>

<!-- Main Content Here -->

</SplitView>

Page 11: Windows 10: Hel10 World! - Novedades XAML

Comportamiento

Your Windows App

Page 12: Windows 10: Hel10 World! - Novedades XAML

SplitView.PaneDisplayModeSplitView.IsPaneOpen

"True"SplitView.IsPaneOpen

"False"

Inline

Overlay

Compact Inline

Compact Overlay

Page 13: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

SplitView

Page 14: Windows 10: Hel10 World! - Novedades XAML
Page 15: Windows 10: Hel10 World! - Novedades XAML

InkCanvas

InkPresenter

Page 16: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

Ink Canvas

Page 17: Windows 10: Hel10 World! - Novedades XAML

Relative Panel es un control de Layout XAML. Posiciona los

elementos estableciendo relaciones entre ellos.

Introducción al panel Relative Panel

Controles de Layout en Windows XAML

GridStack

PanelCanvas

Scroll

ViewerBorder

View

Box

Wrap

GridRelative

Panel

Page 18: Windows 10: Hel10 World! - Novedades XAML

Relative Panel

Adaptativo

• Relativo al Panel

• Relativo a controles “hermanos”

Simplifica nuestro XAML

• Simplifica el árbol visual

• Simplifica los estados visuales

Page 19: Windows 10: Hel10 World! - Novedades XAML

Alineación con el Panel

<RelativePanel>

<Rectangle x:Name="RedRect" Height="100" Width="100" Fill="Red"

RelativePanel.AlignHorizontalCenterWithPanel="True"RelativePanel.AlignVerticalCenterWithPanel="True" />

<Rectangle x:Name="BlueRect" Height="100" Width="200" Fill="Blue" />

</RelativePanel>

Page 20: Windows 10: Hel10 World! - Novedades XAML

Alinearse con “hermanos”

<RelativePanel>

<Rectangle x:Name="BlueRect" Height="100" Width="100" Fill="Blue" />

<Rectangle x:Name="RedRect" Height="100" Width="100" Fill="Red"

RelativePanel.Below="BlueRect"RelativePanel.AlignLeftWith="BlueRect" />

</RelativePanel>

Page 21: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

Relative Panel

Page 22: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

El control Relative Panel es una de lasclaves para tus estrategias a la hora de

adaptar la UI

Page 23: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Convergencia en controles

Page 24: Windows 10: Hel10 World! - Novedades XAML
Page 25: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

Control Pivot

Page 26: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Novedades en XAML

Page 27: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Mejoras en Visual States

Page 28: Windows 10: Hel10 World! - Novedades XAML

Visual State setters & triggers

Setters permite establecer propiedades simples• La mayoría de propiedades no necesitan animación

Triggers declarados cuando se aplica un estado• No necesitamos gestionar eventos en el code-behind

<VisualState x:Name="wideState"><VisualState.Setters>

<Setter Target="myPanel.Orientation" Value="Horizontal" /></VisualState.Setters><VisualState.StateTriggers>

<AdaptiveTrigger MinWindowWidth="600"/></VisualState.StateTriggers>

</VisualState>

Page 29: Windows 10: Hel10 World! - Novedades XAML

Tipos de trigger

• MinWindowWidth

• MinWindowHeight• “Cualquier cosa por encima de este valor”

• Los valores se especifican en píxeles

Page 30: Windows 10: Hel10 World! - Novedades XAML

DEMO

Visual State Triggers

Page 31: Windows 10: Hel10 World! - Novedades XAML

• …cuando algo en la ViewModel cambia

• …cuando cambia algun valor

• …dependiendo del tamaño de la pantalla

• Bien, entonces…

Page 32: Windows 10: Hel10 World! - Novedades XAML

• public class InputTypeTrigger : StateTriggerBase

• {

• private FrameworkElement _targetElement;

• private PointerDeviceType _lastPointerType, _triggerPointerType;

• public FrameworkElement TargetElement

• {

• get { return _targetElement; }

• set

• {

• _targetElement = value;

• _targetElement.AddHandler(FrameworkElement.PointerPressedEvent, newPointerEventHandler(_targetElement_PointerPressed), true);

• }

• }

• public PointerDeviceType PointerType

• {

• get { return _triggerPointerType; }

• set { _triggerPointerType = value; }

• }

• private void _targetElement_PointerPressed(object sender, PointerRoutedEventArgs e)

• {

• _lastPointerType = e.Pointer.PointerDeviceType;

• SetActive(_triggerPointerType == _lastPointerType);

• }

• }

Page 33: Windows 10: Hel10 World! - Novedades XAML

• La lógica es custom

• Se pueden combiner varios Triggers

• Se pueden utilizar otras opciones dentro del Trigger como x:Defer (lo veremos en pocos minutos!)

Page 34: Windows 10: Hel10 World! - Novedades XAML

DEMO

Custom Triggers

3:50

Page 35: Windows 10: Hel10 World! - Novedades XAML
Page 36: Windows 10: Hel10 World! - Novedades XAML

<ListView>

<ListView.ItemTemplate>

<DataTemplate>

<StackPanel>

<SymbolIcon Symbol="{Binding Symbol}"/>

<TextBlock Text="{Binding Name}"/>

<Button Click="Button_ClickHandler"/>

</StackPanel>

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

<ListView>

<ListView.ItemTemplate>

<DataTemplate x:DataType="local:FreeBookCategory">

<StackPanel>

<SymbolIcon Symbol="{x:Bind Symbol}"/>

<TextBlock Text="{x:Bind Name}"/>

<Button Click="{x:Bind Click}"/>

</StackPanel>

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

Se resuelve en tiempo de compilación y produce errores!

Page 38: Windows 10: Hel10 World! - Novedades XAML
Page 39: Windows 10: Hel10 World! - Novedades XAML
Page 40: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

X:Bind

Page 41: Windows 10: Hel10 World! - Novedades XAML
Page 42: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

X:Phase

Page 43: Windows 10: Hel10 World! - Novedades XAML

<DataTemplate x:DataType="model:FileItem">

<Grid Width="200" Height="80">

<TextBlock Text="{x:Bind DisplayName}" />

<TextBlock Text="{x:Bind prettyDate}" x:Phase="1"/>

</Grid>

</DataTemplate>

Build 2013 talk on ListView & CCC

Page 44: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

X:Phase

Page 45: Windows 10: Hel10 World! - Novedades XAML
Page 46: Windows 10: Hel10 World! - Novedades XAML

x:DeferLoadStrategy="Lazy"

Page 47: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

X:DeferLoadStrategy

Page 48: Windows 10: Hel10 World! - Novedades XAML

Tenemos los ingredientes básicos, ¿hacemos una paella?

Page 49: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Page 50: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

Utilizamos todos losconceptos de forma conjunta

Page 51: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Efectos

Page 52: Windows 10: Hel10 World! - Novedades XAML

<Grid><Grid.Transform3D><!– Parent Camera --><PerspectiveTransform3D/>

</Grid.Transform3D>

<Border Background="#FF7F00"><Border.Transform3D>

<CompositeTransform3D RotationX="-90 " …/></Border.Transform3D>

</Border>

<Border Background="#FF6700"><Border.Transform3D><CompositeTransform3D RotationY="-90" …/>

</Border.Transform3D></Border>

</Grid>

Page 53: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

Efectos

Page 54: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Herramientas

Page 55: Windows 10: Hel10 World! - Novedades XAML
Page 56: Windows 10: Hel10 World! - Novedades XAML
Page 57: Windows 10: Hel10 World! - Novedades XAML

DEMODEMODEMO

Visual Tree InspectorDetectando problemas

Page 58: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

Q&A

http://aka.ms/W10Ev02

Page 59: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

http://bit.ly/1hUln2m

Page 60: Windows 10: Hel10 World! - Novedades XAML

#helloWindows10

No olvides realizar la encuesta

¡Gracias!

Javier Suárez RuizWindows Platform Development MVP / Software Developer Plain [email protected] / @jsuarezruiz

http://aka.ms/W10Ev02