Salve a tutti,
Questo è il primo di una serie di post dedicati ai principi fondamentali di Windows Presentation Foundation.
Introduzione a Windows Presentation Foundation
Windows Presentation Foundation (WPF) è un sistema di presentazione di ultima generazione per la compilazione di applicazioni client Windows in grado di offrire all’utente un’esperienza visiva sorprendente. Con WPF è possibile creare una vasta gamma di applicazioni autonome e ospitate da browser.
L’elemento principale di WPF è un motore di rendering vettoriale e indipendente dalla risoluzione compilato per sfruttare i vantaggi dei moderni componenti hardware grafici. Oltre a questo elemento principale, WPF offre un set completo di funzionalità di sviluppo applicazioni che includono Extensible Application Markup Language (XAML), controlli, associazione dati, layout, grafica 2-D e 3-D, animazione, stili, modelli, documenti, elementi multimediali, testo e tipografia. WPF è incluso in Microsoft .NET Framework, per consentire la compilazione di applicazioni che incorporano altri elementi della libreria di classi .NET Framework.
Programmare con WPF
WPF è un sottoinsieme di tipi di .NET Framework in gran parte contenuti nello spazio dei nomi System.Windows. Se in precedenza si sono già compilate applicazioni con .NET Framework utilizzando tecnologie gestite come ASP.NET e Windows Forms, si è già acquisita familiarità con le operazioni fondamentali di programmazione WPF. Sarà quindi possibile creare istanze di classi, impostare proprietà, chiamare metodi e gestire eventi, tutto con il linguaggio di programmazione .NET Framework preferito, ad esempio C# o Visual Basic.
Markup e code-behind
WPF offre miglioramenti di programmazione aggiuntivi per lo sviluppo di applicazioni client Windows. Uno dei miglioramenti più evidenti consiste nella possibilità di sviluppare un’applicazione utilizzando sia markup, sia code-behind, un’esperienza nota agli sviluppatori ASP.NET. In genere, si utilizza il markup Extensible Application Markup Language (XAML) per implementare l’aspetto di un’applicazione, mentre si utilizzano i linguaggi di programmazione gestiti (code-behind) per implementarne il comportamento. La separazione di aspetto e comportamento offre alcuni vantaggi:
-
I costi di sviluppo e gestione risultano ridotti poiché il markup specifico per l’aspetto non è associato strettamente a codice specifico per il comportamento.
-
Lo sviluppo è più efficiente perché i progettisti possono implementare l’aspetto di un’applicazione mentre, contemporaneamente, gli sviluppatori ne implementano il comportamento.
-
È possibile utilizzare vari strumenti di progettazione per implementare e condividere il markup XAML, per rispondere ai requisiti degli sviluppatori delle applicazioni.Microsoft Expression Blend offre funzionalità adatte ai progettisti, mentre Visual Studio 2005 è indirizzato agli sviluppatori.
-
Le operazioni di globalizzazione e localizzazione delle applicazioni WPF sono state notevolmente semplificate.
Markup
XAML è un linguaggio di markup basato su XML utilizzato per implementare l’aspetto di un’applicazione in modo dichiarativo. Viene in genere utilizzato per creare finestre, finestre di dialogo, pagine e controlli utente e per riempire questi elementi con controlli, forme e grafica.
Nell’esempio riportato di seguito viene utilizzato XAML per implementare l’aspetto di una finestra che contiene un solo pulsante.
1: <Window
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: Title="Window with Button"
4: Width="250" Height="100">
5:
6: <!-- Add button to window -->
7: <Button Name="button">Click Me!</Button>
8:
9: </Window>
In particolare, XAML definisce qui una finestra e un pulsante utilizzando gli elementi Window e Button, rispettivamente. Ogni elemento viene configurato con attributi, ad esempio l’attributo Window dell’elemento Title per specificare il testo della barra del titolo della finestra. In fase di esecuzione, WPF converte gli elementi e gli attributi definiti nel markup in istanze di classi WPF. Ad esempio, l’elemento Window viene convertito in un’istanza della classe Window la cui proprietà Title è il valore dell’attributo Title.
Nella figura seguente viene illustrata l’user interface (UI) definita da XAML nell’esempio precedente.
Code-behind
Il comportamento principale di un’applicazione consiste nell’implementare la funzionalità che risponde alle interazioni dell’utente, inclusa la gestione di eventi (ad esempio la scelta di un menu, una barra degli strumenti o un pulsante) e la chiamata alla logica di business e alla logica di accesso ai dati in risposta a tali eventi. In WPF, questo comportamento viene in genere implementato in codice associato a markup. Questo tipo di codice è noto come code-behind. Nell’esempio riportato di seguito vengono riportati code-behind e markup aggiornato dell’esempio precedente.
XAML
1: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3: x:Class="SDKSample.AWindow"
4: Title="Window with Button"
5: Width="250" Height="100">
6: <!-- Add button to window -->
7: <Button Name="button" Click="button_Click" >Click Me!</Button>
8: </Window>
C#
1: using System.Windows; // contains Window, RoutedEventArgs, MessageBox
2:
3: namespace SDKSample
4: {
5: publicpartialclass AWindow : Window
6: {
7: public AWindow()
8: {
9: // InitializeComponent call is required to merge the UI
10: // that is defined in markup with this class, including
11: // setting properties and registering event handlers
12: InitializeComponent();
13: }
14:
15: void button_Click(object sender, RoutedEventArgs e)
16: {
17: // Show message box when button is clicked
18: MessageBox.Show("Hello, Windows Presentation Foundation!");
19: }
20: }
21: }
Visual Basic
1: Namespace SDKSample
2:
3: Partial Public Class AWindow
4: Inherits System.Windows.Window
5:
6: PublicSubNew()
7: ' InitializeComponent call is required to merge the UI
8: ' that is defined in markup with this class, including
9: ' setting properties and registering event handlers
10: InitializeComponent()
11: End Sub
12:
13: Private Sub button_Click(ByVal sender AsObject, ByVal e As RoutedEventArgs)
14: ' Show message box when button is clicked
15: MessageBox.Show("Hello, Windows Presentation Foundation!")
16: End Sub
17: End Class
18: End Namespace
per questo articolo e tutto
Alla Prossima!