Grafikus alkalmazások WPF-fel¶
A konzolos programok után grafikus asztali alkalmazást készítünk. A JavaFX témáinak C#-beli megfelelőjéhez a WPF-et (Windows Presentation Foundation) használjuk. A WPF-ben a felületet XAML írja le, a működést C# kód adja. Pythonban hasonló feladatra például a Tkinter használható, de a felület leírása és az eszközök eltérnek.
Előfeltételek¶
A WPF Windows rendszeren fut. Szükség van telepített .NET SDK-ra és Windows asztali fejlesztést támogató környezetre, például Visual Studióra. Az SDK ellenőrzése: dotnet --version.
Terminálból új WPF-projekt:
Visual Studióban a WPF Application projekt sablont válasszuk. A projekt létrehozásakor a keretrendszer célja Windows (net...-windows), a projektfájlban a UseWPF beállítás aktív.
A projekt felépítése¶
HelloWpf/
├── HelloWpf.csproj
├── App.xaml
├── App.xaml.cs
├── MainWindow.xaml
└── MainWindow.xaml.cs
App.xaml: az alkalmazás erőforrásai és az induló ablak (StartupUri).MainWindow.xaml: a főablak elemei és elrendezése.MainWindow.xaml.cs: a főablak C# rész-osztálya, benne az eseménykezelőkkel.HelloWpf.csproj: a projekt beállításai.
A JavaFX-ben a HelloApplication, a hello-view.fxml és a HelloController külön szerepet kap. A WPF-ben a felület és a hozzá tartozó kód a MainWindow.xaml és MainWindow.xaml.cs fájlpárban áll; a .cs fájlban a konstruktor InitializeComponent() hívása tölti be a XAML-ben leírt elemeket.
flowchart TD
A[App.xaml] --> B[MainWindow.xaml]
B <--> C[MainWindow.xaml.cs]
Első ablak¶
Az új projekt MainWindow.xaml fájlját cseréljük erre:
<Window x:Class="HelloWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Első WPF program" Height="240" Width="360">
<Grid>
<TextBlock Text="Hello World!"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="24" />
</Grid>
</Window>
Futtatáskor egy ablak jelenik meg középen a „Hello World!” felirattal. A XAML attribútumai a C# objektumok tulajdonságainak felelnek meg. A következő fejezetben gombot, beviteli mezőt és táblázatot adunk az ablakhoz.