Upload
dotnetmarche
View
143
Download
3
Embed Size (px)
DESCRIPTION
Da Windows Forms a WPF Il ruolo di XAML DependencyProperties e Data Binding
Citation preview
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.
WPF – basics13° Workshop DotNet Marche
AgendaDa Windows Forms a WPFIl ruolo di XAMLDependencyProperties e Data Binding
Da Windows Forms a WPF
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.
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)
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#
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.
XAML in pratica
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
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
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
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.
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
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}”/>
DataBinding in pratica….