WPF: Ready to go?

Dopo circa due mesi di studio (notturno e frammentato) mi sono fatto una mia idea di WPF: potente e affascinante, ma pericoloso.

Sulla potenza e sul fascino non mi soffermo, il web è pieno di info al riguardo.

Sul fatto che sia pericoloso, faccio un semplice esempio, basato sull'interazione tra XAML e codice c#.

L'uso promisquo di codice XAML e codice c#, oltre ad essere una necessità, è la pietra angolare della filosofia di progetto di WPF, che prevede la separazione tra i layer di presentazione e di logica (permettetemi questo obbrobrio, tanto avete tutti capito cosa intendo).

Questa promisquità da una parte è un bene, perchè usando una programmazione dichiarativa, è possibile esprimere cosa si vuole ottenere, lasciando che il framework implementi il come si ottiene.

Dall'altra è male, perchè abbiamo fatto tanto per avere sistemi di sviluppo che verifichino quanto più possibile a "compile time" la correttezza (almeno formale) dei nostri sorgenti, mentre con WPF si fa allegramente uso di valori testuali per utilizzare dal codice c# gli oggetti definiti in XAML.

Un esempio semplicissimo, con una TextBox e un Button:

<Window x:Class="WpfApplication.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Esempio" Height="300" Width="300"> <StackPanel> <TextBox Name="textBox1" Margin="5"/> <Button Click="Button_Click" Margin="5">Mostra il valore</Button> </StackPanel> </Window>

private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show(this.FindName("textBox1").ToString()); }

Il risultato di questa complicatissima applicazione è a dir poco spettacolare:

image 

Ora, se per qualsivoglia motivo cambiamo nel sorgente XAML il nome del TextBox, sostituendo "textBox1" con "pippo", abbiamo due effetti collaterali indesiderati:

  1. L'ambiente di sviluppo (VS 2008), visto che sto cambiano un valore testuale, non prevede alcun avviso del tipo "cerca e sostituisci";
  2. La compilazione fila liscia come l'olio.

Peccato che ora l'esecuzione del programma vada in crash.

image

Mi sa che tocca lavorare di brutto con i test, ma al momento non ho alcuna esperienza di TDD con WPF, perchè (come mio solito) ci ho solo giocato per capire cos'è.

E voi cosa ne pensate? Se interessa potremmo spostare la discussione sul forum.

Io, per non saper ne leggere ne scrivere (e ne sicuramente programmare), torno a WinForm.

posted @ sabato 31 maggio 2008 16:03

Print
Comments have been closed on this topic.
«dicembre»
domlunmarmergiovensab
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234