BAKALÁŘSKÁ PRÁCE Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation Straka Jiří Unicorn College © 2010 Unicorn College, V kapslovně 2767/2, Praha 3, 130 00 Název práce v ČJ: Převod WF do WPF Název práce v AJ: Converting WF into WPF Autor: Straka Jiří Akademický rok: 2011 Kontakt: E-mail: [email protected] Tel.: (+420) 774 439 398 Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 1. ZADÁNÍ - 4 - Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 2. ABSTRAKT V následující práci se podíváme na historický vývoj technologií pomocí, kterých lze vyvíjet okenní aplikace pro operační systém Windows. Detailněji se podíváme na dvě nejnovější technologie společnosti Microsoft, které jsou součástí .NET Frameworku a jedná se o technologie Windows Forms a Windows Presentation Foundation (WPF). Technologie Windows Forms může být také využita např. pro vývoj aplikací pro operační systém Linux pomocí projektu Mono od společnosti Novell. Celá práce je zaměřena hlavně na technologii WPF, a proto také nahlédneme do jejího využití ve vývoji bohatých internetových aplikací pomocí Silverlight a Windows Phone 7, které nám umožňuje vyvíjet pro mobilní zařízení. Nejobsáhlejší část práce je věnována popisu aplikace pro převod Windows Forms do WPF. V popisu aplikace nalezneme např. požadavky kladené na aplikaci, třídní diagram celé aplikace, popis jednotlivých tříd, použité návrhové vzory, atd. Aplikace umožňuje načíst vstupní soubor, který definuje uživatelské rozhraní ve Windows Forms a převést tento soubor do, co možná nejvěrohodnější reprezentace ve WPF pomocí značkovacího jazyka XAML (Extensible Application Markup Language), který je typický pro WPF. Aplikace pro svůj vlastní převod nepodporuje všechny komponenty, které Windows Forms nabízí, ale pouze omezenou množinu vybraných komponent. U této množiny komponent je opět vybráno jen několik stěžejních vlastností, které aplikace pro převod podporuje. Rozšiřitelnost je jeden z hlavní požadavků, který musí aplikace splňovat. Proto je všechna aplikační logika pro převod mezi technologiemi soustředěna v zásuvných modulech. Zásuvné moduly umožňují snadné rozšíření portfolia podporovaných komponent a jejich vlastností pro převod. V závěru práce jsou shrnuty všechny poznatky, které byly nasbírány během vývoje aplikace. Je zde uveden výčet možných směrů, jakými by se mohlo rozšiřování aplikace ubírat, ale také faktory, které převod z Windows Forms do WPF ztěžují a v některých případech i znemožňují. Klíčová slova: .NET Framework, Windows Forms, Windows Presentation Foundation, XAML, Silverlight, Windows Phone 7, XNA, C#, návrhový vzor, zásuvný modul. - 5 - Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 3. ABSTRACT Inside following Bachelor's Thesis we take a look at historical development of technologies which allow us to develop form applications for operation system called Windows. We take look at the two latest Microsoft technologies which are a part of .NET Framework in detail. These technologies are Windows Forms and Windows Presentation Foundation (WPF). Technologies Windows Forms can be also used for developing applications for Linux operation system through Mono project by Novell Company. The whole Bachelor's Thesis is mainly focused on WPF. Therefore, we look into its usage in developing rich internet application via Silverlight and Windows Phone 7 which allows us to develop for mobile devices. The most extensive part of whole Bachelor’s Thesis is dedicated to description of application for converting Windows Forms into Windows Presentation Foundation. Inside the description of application we can find for example requirements for application, class diagram of whole application, description of each class, used design patterns, etc. Application allows us to load input file which defines user interface in Windows Forms technology and convert this file into as credible representation as possible in WPF using markup language XAML. This markup language is typical for WPF. The application doesn't support all the components which Windows Forms offers. But there is just limited set of selected components. Every component has selected set of supported attributes for conversion. Extensibility is one of the most important requests for application. That's why all the application logic for converting is concentrated inside plugins. Plugins allow to application be easily extensible and upgradable. The conclusion of Bachelor's Thesis summarizes all pieces of knowledge that have been collected during developing application. There is also enumeration of all possible ways how could be the application extended. But there are also facts which make converting Windows Forms into WPF more difficult. Keywords: .NET Framework, Windows Forms, Windows Presentation Foundation, XAML, Silverlight, Windows Phone 7, XNA, C#, design pattern, plugin - 6 - Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 4. PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma Převod Windows Forms do Windows Presentation Foundation jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou též uvedeny v seznamu literatury a použitých zdrojů. Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb. V Praze dne …….………………. Straka Jiří - 7 - Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 5. PODĚKOVÁNÍ (DOBROVOLNÉ) Děkuji vedoucímu bakalářské práce Ing. David Hartman Ph.D. za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce. - 8 - Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 6. OBSAH 1. Zadání ............................................................................................................................... - 4 - 2. Abstrakt ............................................................................................................................ - 5 - 3. Abstract ............................................................................................................................ - 6 - 4. Prohlášení ........................................................................................................................ - 7 - 5. Poděkování (dobrovolné) ................................................................................................. - 8 - 6. Obsah ............................................................................................................................... - 9 - 7. Úvod ............................................................................................................................... - 12 - 7.1 Popis jednotlivých kapitol práce .............................................................................. - 12 - 7.2 Konvence používané v této práci ............................................................................. - 13 - 7.3 Konvence .................................................................................................................. - 13 - 8. Vývoj aplikací pro systém Windows ............................................................................... - 14 - 8.1 Základy architektury .NET ........................................................................................ - 15 - 8.2 Možnosti vývoje na platformě .NET ......................................................................... - 16 - 8.3 Windows Forms ....................................................................................................... - 17 - 8.3.1 Některé novinky Windows Forms 2 .................................................................. - 18 - 8.3.2 Realizace Windows Forms ................................................................................ - 19 - 8.4 Projekt Mono ........................................................................................................... - 20 - 8.4.1 Součásti projektu Mono .................................................................................... - 20 - 8.5 Windows Presentation Foundation ......................................................................... - 21 - 8.5.1 XAML ................................................................................................................. - 22 - 8.5.2 Ukázka XAML jazyka .......................................................................................... - 22 - 8.5.3 Výhody WPF oproti WinForms .......................................................................... - 23 - 8.5.4 Vývoj WPF ......................................................................................................... - 24 - 8.5.5 Vylepšení ve WPF 3.5 ........................................................................................ - 24 - 8.5.6 Vylepšení ve WPF 3.5 SP1 ................................................................................. - 25 - 8.5.7 Vylepšení ve WPF 4 ........................................................................................... - 25 - 8.6 Silverlight.................................................................................................................. - 27 - 8.6.1 Souhrn zajímavých možností technologie Silverlight ........................................ - 28 - 8.6.2 Jak Silverlight aplikace funguje? ....................................................................... - 29 - 8.6.3 Začlenění aplikace do internetové stránky ....................................................... - 29 - 8.7 Windows Phone 7 .................................................................................................... - 31 - - 9 - Bakalářská práce Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation 9. Návrh a analýza aplikace ................................................................................................ - 32 - 9.1 Požadavky na aplikaci .............................................................................................. - 32 - 9.1.1 Funkční požadavky ............................................................................................ - 32 - 9.1.2 Nefunkční požadavky ........................................................................................ - 32 - 9.2 Diagram tříd ............................................................................................................. - 33 - 10. Implementace .............................................................................................................. - 34 - 10.1 Zvolené technologie ............................................................................................... - 34 - 10.2 Popis aplikace ......................................................................................................... - 34 - 10.3 Podporovaní komponenty a vlastnosti pro převod ............................................... - 34 - 10.4 Rozhraní aplikace ................................................................................................... - 35 - 10.4.1 IControlCreator ............................................................................................... - 35 - 10.4.1.1 Decorator ..................................................................................................... - 36 - 10.4.1.2 Využití vzoru Decorator v aplikaci ................................................................ - 37 - 10.5 Popis tříd prezentační vrstvy .................................................................................. - 37 - 10.5.1 MainWindow ................................................................................................... - 37 - 10.5.2 PluginWindow ................................................................................................. - 38 - 10.6 Popis jednotlivých tříd aplikační logiky .................................................................. - 39 - 10.6.1 Constants ........................................................................................................ - 39 - 10.6.2 ControlCreatorFactory .................................................................................... - 39 - 10.6.3 Attribute .......................................................................................................... - 40 - 10.6.4 ElementAttribute ............................................................................................ - 40 - 10.6.5 FormConverter ................................................................................................ - 41 - 10.6.5.1 Facade .......................................................................................................... - 41 - 10.6.5.2 Využití vzoru Facade v aplikaci ..................................................................... - 42 - 10.6.6 FormElement................................................................................................... - 42 - 10.6.7 FormElementReader ....................................................................................... - 43 - 10.6.7.1 GetNamespace ............................................................................................. - 44 - 10.6.7.2 GetFormName ............................................................................................. - 44 - 10.6.7.3 GetElementType .......................................................................................... - 44 - 10.6.7.4 GetChildElements ........................................................................................ - 45 - 10.6.8 Logger .............................................................................................................. - 45 - 10.6.8.1 Singleton ...................................................................................................... - 46 - 10.6.8.2 Využití vzoru Singleton v aplikaci ................................................................. - 47 - - 10 -
Description: