V treťom diely zo série Windows Presentation Foundation sa pozrieme na tvorbu a prácu z oknami.
Úvod
Okná vo WPF sú tvorené pomocou triedy Window. Pokiaľ ste už používali Windows Forms alebo čítali našu sériu o Windows Forms, možno si hovoríte, čím je trieda Window odlišná od triedy Form. V prvom rade je vďaka WPF vykresľovaná cez GPU namiesto CPU a tak šetrí výkon a výdrž počítača. Hlavným rozdielom je však prispôsobiteľnosť – vďaka jazyku XAML je možné vytvoriť si, alebo nájsť na internete množstvo šablon, ktoré prispôsobia vzhľad okna, aby vám dokonale vyhovoval (v neskorších dieloch sa na jednu z vytvorených úprav pozrieme).
Dôležitou vlastnosťou okien je to, že sa do nich zmestí najviac jeden ovládací prvok – preto vám generátor automaticky do nového okna vloží nový ovládací prvok – Grid (ten si rozoberieme v budúcom diely).
Vlastnosti
Okná vo WPF majú niekoľko dôležitých vlastností, ktoré si tu preberieme podľa kategórií. Vlastnosti je možné nastaviť v designéri v okne Properties, v kóde C# alebo v XAML kóde.
Common
- Icon – klasická ikona, ktorú vidíte v ľavom hornom rohu okna.
- ResizeMode – výber módu zmeny veľkosti. Na výber máte z NoResize – žiadna zmena veľkosti, CanMinimize – je možné minimalizovať, CanResize – je možné meniť veľkosť a CanResizeWithGrip, ktorý zobrazí pomocný bod na zmenu veľkosti.
- ShowInTaskbar – rozhoduje o tom, že sa vám okno zobrazí v panely úloh.
- Title – výber titulku okna.
- TopMost – označuje, či bude okno stále na vrchu.
Appearance
- WindowStyle – vyberá vzhľad okraju okna. Môže vyzerať ako klasické okno, mať 3D okraj, alebo fungovať ako panel, tiež je možné okraj okna vypnúť úplne.
- AllowsTransparency – Povoľuje priehľadnosť okna. Toto sa používa vždy z vypnutým okrajom okna.
XAML
Okno vo WPF býva (v prípade, že vytvárate okno) skoro vždy hlavným tagom XAML kódu. preto obsahuje definíciu používaných menných priestorov. Tried Window je v XML jedným z mála príkladov, kde je použitá vlastnosť Class XAML, ktorá vyberá, ktorú triedu bude kopírovať. Keďže vaša trieda v C#, ktorá bude ovládať okno, je odvodená od triedy Window, ale Xaml kód používa objekt triedy Window, musíte mu určiť, že ktorá je skutočná trieda, ktorú má používať x:Class=“WebWPF.MainWindow“ . V tomto kóde je naša trieda MainWindow a nachádza sa v mennom priestore WebWPF.
Bežne je v okne nastavený aj titulok a veľkosť.
Title="MainWindow" Height="350" Width="525"
Po vytvorení okna je jeho obsahom automaticky prázdny objekt typu Grid a objektu okna sú priradené odkazy na menné priestory :
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WebWPF" mc:Ignorable="d"
Odkaz xmlns je hlavným menným priestorom a odkazuje na online definíciu priestoru System.Windows a ďalšie. V definícií xaml sú adresy (ako napríklad http://schemas.microsoft.com/winfx/2006/xaml/presentation priradené rôznym menným priestorom. Zaujímavý je však xmlns:local, ktorý obsahuje odkaz na menný priestor nachádzajúci sa vo vašej aplikácií (clr-namespace) a to WebWPF.
Celý kód tak vyzerá nasledovne :
<Window x:Class="WebWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WebWPF" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid/> </Window>
V tomto kóde môžete upravovať a nastavovať vlastnosti okna. Nabudúce si ukážeme ako sa používa Grid a vysvetlíme si niektoré základné vlastnosti.