Pro tvorbu uživatelského rozhraní v desktopových aplikacích na platformě Microsoft .NET je možné použít buď klasické Windows Forms, nebo novější Windows Presentation Foundation (WPF). Oba grafické systémy asi není třeba představovat, alespoň minimální představu o nich musí mít každý vývojář desktopových .NET aplikací.
Budete-li vyvíjet nějakou desktopovou aplikaci s uživatelským rozhraním, budete stát před rozhodnutím, kterou z těchto dvou věcí použít. Bezhlavě trvat na tom, že se použije novější WPF je stejně hloupé, jako použít Windows Forms tam, kde se svými schopnostmi plně využije potenciál WPF.
Proto jsem sestavil tabulku hodnocení, která by měla usnadnit rozhodnutí o použitém grafickém systému.
| Windows Forms | WPF |
Ano | Ne | Ano | Ne |
1. Mají vývojáři dostatečné zkušenosti s daným grafickým systémem? | 1 | -1 | 1 | -1 |
2. Mají vývojáři zkušenosti s jazykem HTML? | 0 | 1 | 1 | -1 |
3. Bude aplikace používána na zařízeních s různým DPI? | -1 | 0 | 1 | 0 |
4. Bude aplikace používána na zařízeních s dotykovým ovládáním? | -1 | 0 | 1 | 0 |
5. Bude v aplikaci použito přizpůsobení standardních ovládacích prvků? | 0 | 0 | 1 | 0 |
6. Bude v aplikaci používána vektorová grafika? | -1 | 0 | 1 | 0 |
7. Budou v aplikaci používány animované efekty? | -1 | 0 | 1 | 0 |
8. Bude v aplikaci použit Data binding? | 0 | 0 | 1 | 0 |
9. Bude uživatelské rozhraní aplikace používat Windows API? | 1 | 0 | -1 | 0 |
10. Bude aplikace lokalizována do více jazyků? | 1 | 0 | -1 | 0 |
11. Bude aplikace provozována na málo výkonném hardware? | 1 | 0 | -1 | 0 |
12. Budou uživatelé aplikace používat vlastní přizpůsobení vzhledu operačního systému (WindowBlinds, atd.)? | 1 | 0 | -1 | 0 |
U každé otázky připočtěte k Windows Forms a WPF hodnotu podle odpovědi Ano/Ne. Pokud si nejste jisti, vyberte pravděpodobnější možnost. Následující tabulky ukazují, jak jsem se rozhodoval při vývoji aplikací TorrentControl (nahoře) a Friends Watcher (dole).
| Windows Forms | WPF |
1. | 1 | -1 |
2. | 1 | -1 |
3. | -1 | 1 |
4. | 0 | 0 |
5. | 0 | 0 |
6. | 0 | 0 |
7. | 0 | 0 |
8. | 0 | 0 |
9. | 0 | 0 |
10. | 1 | -1 |
11. | 0 | 0 |
12. | 0 | 0 |
Celkem | 2 | -2 |
| Windows Forms | WPF |
1. | 1 | -1 |
2. | 1 | -1 |
3. | -1 | 1 |
4. | -1 | 1 |
5. | 0 | 0 |
6. | 0 | 0 |
7. | 0 | 0 |
8. | 0 | 1 |
9. | 0 | 0 |
10. | 1 | -1 |
11. | 0 | 0 |
12. | 0 | 0 |
Celkem | 1 | 0 |