Lo ammetto… scrivere convertitori mi ha sempre appassionato. Sin dai tempi in cui ho scritto il mio primo convertitore/parser da linguaggio per macchinari a controllo numerico, il fatto di poter delegare ad una macchina un’attività dispendiosa e soggetta ad errori quale la conversione tra linguaggi mi ha affascinato.
Molti sviluppatori stanno impiegando il mio convertitore VB6(2)XAML, e ancora oggi, dopo tre anni dal suo rilascio mi arrivano richieste di nuove implementazioni. Durante una chiacchierata ad un uno degli ultimi incontri della community XeDotNet è nata l’idea di scrivere quello che vedrete descritto in questo post: il convertitore da Windows Forms a XAML (e quindi a WPF o Silverlight).
Il convertitore funziona esattamente come quello per VB6, ovvero è stato implementato un motore di generazione dello XAML che si basa su templates personalizzati per generare dinamicamente lo XAML di destinazione. Accetta in input un assembly compilato contenente le form da convertire e dà la possibilità di selezionare da una combo tutte le form presenti nell’assembly. E’ presente anche la possibilità di avere una preview della form convertita.
Qui potete vedere una form Winform e la sua “omologa” convertita in WPF:
I control templates che ho già creato sono i seguenti:
Controllo Winform | Controllo WPF |
Form | Window |
Panel | Canvas |
Button | Button |
Label | TextBlock |
TextBox | TextBox |
CheckBox | CheckBox |
RadioButton | RadioButton |
ComboBox | ComboBox |
ProgressBar | ProgressBar |
GroupBox | GroupBox |
TabControl | TabControl |
TabPage | TabItem |
SplitContainer | Grid |
SplitterPanel | Canvas |
Ovviamente la conversione si basa su posizionamento assoluto utilizzando i canvas. Il tool è (MOLTO) in BETA e sono ben accette richieste, osservazioni e bug reporting. Lo potete scaricare qui. Happy conversion!