Ich habe schon mal ne WPF Anwendung gemacht, das hat sehr gut geklappt.
Sehr nett ist vor allem, wie das Databinding damit funktioniert. Man hat beispielsweise in dem ViewModel eine Menge an Personen als ObservableCollection<Person> und kann im XAML eine Listbox daran binden und ein Template definieren, wie ein einzelnes Item dargestellt werden soll.
In
VCL würde man dafür vermutlich OwnerDraw hernehmen, aber bei diesen WPF-Templetes hat man natürlich weitgehende Unterstütung vom Designer und kann (mit Designtime-Daten) das Layout schon grafisch zurechtmachen.
Wenn man die ViewModels und Models "richtig" gemacht hat, spiegelt die
GUI auch stets den internen Programmstand wieder. Beispielsweise kann man ListBox.SelectedItem dann direkt nach Person casten. Die ganze
GUI ist auch stufenlos skalierbar, Elemente lassen sich problemlos verschachteln und die Performance war bei meinen Anwendungen kein Problem.
Aber WPF besiert zu stark auf
DirectX, als dass eine Portierung machbar wäre. Microsoft rät (vielleicht daher?) dazu, für jede Pletform eine eigene
GUI zu entwickeln. (Den Kerncode mit C# kann man ja portieren)