18

WPF basics

Embed Size (px)

DESCRIPTION

Da Windows Forms a WPF Il ruolo di XAML DependencyProperties e Data Binding

Citation preview

Page 1: WPF basics
Page 2: WPF basics

Ingegnerizzare il vostro business per massimizzarne il valore: realizziamo con voi e per voi soluzioni innovative per ottimizzare il vostro lavoro.

siti dinamici ed applicativi web per il professionista, le aziende e la pubblica amministrazione, implementati con tecnologia JoshuaCMS© per una maggiore flessibilità e fruibilità della gestione dei contenuti del sito

formazione e framework per aziende e professionisti che vogliono approfondire le proprie conoscenze e innovare i propri prodotti con le ultime realtà tecnologiche del mondo .Net

sistemi informativi adatti alle esigenze del cliente, per ottimizzare e massimizzare il lavoro. Soluzioni attente alle ultime innovazioni tecnologiche e alla user experience dell’utente finale.

Page 3: WPF basics

WPF – basics13° Workshop DotNet Marche

Page 4: WPF basics

AgendaDa Windows Forms a WPFIl ruolo di XAMLDependencyProperties e Data Binding

Page 5: WPF basics

Da Windows Forms a WPF

Page 6: WPF basics

Da Windows Forms a WPFNuovi tipi di contenuti da presentareNecessità di nuovi strumenti di programmazioneDividere la parte “Grafica” dalla parte “Applicativa” dello sviluppo

Unificare differenti tecnologieApplicare la conoscenza e acquisita grazie al Web anche a Windows Forms.

Page 7: WPF basics

Da Windows Forms a WPFCosa ha in comune WPF con Windows Forms ??

NIENTE !!

Nuovo linguaggio di programmazione “Funzionale” allo sviluppo di grafica. (XAML)Nuovo modello ad oggetti per rappresentare la UINuovo propagazione degli eventiNuovo modello di gestione dei comandiNuovo modello di binding… etc etc… Sfrutta le caratteristiche della scheda grafica (Direct X)

Page 8: WPF basics

WPF – eXtensible Application Markup Language

Linguaggio dichiarativo funzionale allo sviluppo della interfaccia utente

Posso : Dichiarare oggetti e creare oggettiSottoscrivere eventiImpostare ProprietàManipolare DatiInvocare Metodi…

Tutto quello che posso fare in XAML lo posso fare in C#

Page 9: WPF basics

WPF – eXtensible Application Markup Language

Creare Grafica Vettoriale 2DCreare Grafica Vettoriale 3D

Dichiarare camere, luci, primitive, textures, etc….

Creare Animazioni 2D ed Animazioni 3D

Utilizzare Stili e Templates per dichiarare la grafica degli oggetti.

Page 10: WPF basics

XAML in pratica

Page 11: WPF basics

XAML vs Code

<Button Height="23" HorizontalAlignment="Left" Margin="52,63,0,0" Name="button1" VerticalAlignment="Top" Width="75">Ok</Button>

Instanzia un oggetto di tipo

“Button”

Assegna valori alle proprietà dell’oggetto

Inserisce il “Contenuto” dell’oggetto

Page 12: WPF basics

Namespace

Come fa il parser XAML a “trovare” le classi corrispondenti agli oggetti da instanziare ?

Attraverso un mapping dei namespaceNella dichiarazione dell’oggetto, oppureNella dichiarazione del root object

I namespaces di default sono:http://schemas.microsoft.com/winfx/2006/xaml/presentationhttp://schemas.microsoft.com/winfx/2006/xaml

Page 13: WPF basics

La proprietà content

<Button Height="23“ Margin="52,63,0,0“ Name="button1" Width="75“>

<Button.Content><MediaElement

Margin="0,0,0,0“Name="mediaElement1“Height="50" Width="50“Source=“c:\myvideo.avi” />

</Button.Content></Button>

Content è di tipo

System.Object

Page 14: WPF basics

Type Converters

I Type converters sono classi che aiutano la conversione di valori di proprietà nel tipo appropriato

Es: <Button Margin="52,63,0,0“ />

L’oggetto Button nella sua proprietà “Margin” accetta un oggetto di tipo Thickness.In xaml scriviamo una serie di valori numerici in formato di stringa.

Page 15: WPF basics

Type Converters

Il parser Xaml si occupa di cercare un convertitore appropriato per ogni tipo.

L’attributo TypeConverterAttribute permette di indicare il convertitore custom per un tipo custom

Per trovare il convertitore di un tipo di oggetto devo utilizzare il metodo GetConverter della classe TypeDescriptor

Tutti i convertitori ereditano ed estendono TypeConverter

Page 16: WPF basics

Markup ExtensionsSono strutture che estendono le potenzialità di xaml

Ogni markup extension deriva dalla classe MarkupExtensionPossiamo ereditare la classe MarkupExtension per creare nostre estenzioniIl parser xaml considera markup extension tutti i valori di proprietà che sono racchiusi in { }Molto utilizzato per il binding.

Es:

<Button Background=“{x:Null}”/>

Page 17: WPF basics

DataBinding in pratica….

Page 18: WPF basics