Lekcja 3. Środowisko i technologie — Visual Studio, WPF, WinForms, Qt
PodstawowyPo co się tego uczymy?
Podstawa programowa (INF.04.5.1 i INF.04.5.2) wymaga znajomości środowiska programistycznego dla aplikacji desktopowych oraz świadomego wyboru frameworku. Zanim zaczniesz pisać kod, warto wiedzieć, czym różni się WPF od WinForms i Qt — i dlaczego to właśnie WPF będzie naszym głównym narzędziem w tym dziale.
Teoria
IDE (Integrated Development Environment) — zintegrowane środowisko programistyczne — to program łączący w jednym miejscu: edytor kodu z podpowiedziami składni (IntelliSense), kompilator, debugger (narzędzie do wyszukiwania błędów krok po kroku) oraz często wizualny projektant interfejsu (przeciąganie i upuszczanie kontrolek na okno). Dla platformy .NET/Windows standardem jest Visual Studio — to w nim będziemy tworzyć wszystkie aplikacje desktopowe w tym dziale.
Frameworki do tworzenia aplikacji desktopowych w C#:
- WPF (Windows Presentation Foundation) — nowocześniejszy framework Microsoftu, interfejs opisywany w języku XAML (podobnym do HTML/XML), z wbudowanym wsparciem dla data binding (automatycznego łączenia danych z interfejsem), animacji, stylów i wzorca MVVM (poznamy go w dalszych lekcjach). To on jest naszym głównym narzędziem w tym dziale;
- Windows Forms (WinForms) — starszy framework, gdzie interfejs projektuje się głównie wizualnie (przeciąganie kontrolek), a kod generowany jest automatycznie w tle. Prostszy na start, ale mniej elastyczny i rzadziej wybierany w nowych projektach;
- Qt — framework wieloplatformowy (C++/Python), pozwalający napisać jedną aplikację działającą na Windows, macOS i Linux bez przepisywania kodu. Wymieniony w podstawie programowej jako alternatywa, ale w naszym dziale skupiamy się na WPF.
Dlaczego WPF? Bo rozdziela wygląd (XAML) od logiki (C# w tzw. code-behind), co ułatwia pracę zespołową (jedna osoba projektuje wygląd, druga pisze logikę) i jest zgodne z nowoczesnym podejściem do programowania interfejsów, które poznasz też przy okazji aplikacji mobilnych (.NET MAUI używa bardzo podobnej koncepcji XAML).
Schemat
Porownanie frameworkow do aplikacji desktopowych w C#:
WPF WinForms Qt
Jezyk UI: XAML kod C# (generowany) C++/Python
Wyglad: elastyczny, prostszy, mniej wieloplatformowy
stylowany elastyczny
Wzorzec: MVVM (rozdzielenie kod czesto zmieszany rozne podejscia
logiki od UI) z UI
Platforma: tylko Windows tylko Windows Windows/macOS/Linux
Nasz wybor: ✓ GLOWNA TECHNOLOGIA wspomniana wspomniana
w tym dziale do porownania jako alternatywa
Przykład z życia
Wiele profesjonalnych aplikacji biznesowych na Windows — systemy księgowe, programy do zarządzania magazynem, aplikacje bankowe na komputery stacjonarne w oddziałach — jest pisanych właśnie w WPF, bo pozwala on tworzyć rozbudowane, estetyczne interfejsy z możliwością łatwej zmiany stylu graficznego (np. dopasowanie do identyfikacji wizualnej firmy) bez przepisywania logiki aplikacji.
Kod (XAML)
<!-- Podglad tego, co dopiero nadejdzie: minimalny szkielet okna WPF w XAML -->
<Window x:Class="MojaPierwszaAplikacja.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Moja pierwsza aplikacja WPF" Height="300" Width="450">
<Grid>
<TextBlock Text="Czesc, WPF!"
FontSize="24"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</Window>
Komentarz i wyjaśnienie kodu
To zapowiedź tego, co zaczniemy pisać w kolejnej lekcji — nie musisz na razie rozumieć każdej linijki. Zwróć uwagę na strukturę: <Window> to całe okno aplikacji, <Grid> to kontener układający elementy wewnątrz, a <TextBlock> to pojedynczy element tekstowy — dokładnie tak, jak w HTML zagnieżdżamy znaczniki jeden w drugim. To podobieństwo do HTML/XML jest celowe i bardzo pomaga, jeśli znasz już dział HTML i CSS z INF.03.
Ćwiczenie samodzielne
Zainstaluj (jeśli jeszcze nie masz) Visual Studio 2022 lub 2026 Community z obciążeniem ".NET desktop development" (Programowanie aplikacji klasycznych .NET) w Visual Studio Installer. To jedyny konkretny warunek techniczny, żeby móc wykonywać kolejne lekcje tego działu.
Zadania do pracy własnej
Wypisz 3 różnice między WPF a WinForms, korzystając z tabeli porównawczej z tej lekcji.
Sprawdź (np. w dokumentacji Microsoft Learn), czym jest XAML użyty w .NET MAUI (aplikacje mobilne) — czy jest to ta sama technologia co w WPF, czy tylko podobna składnia? Zapisz wnioski w 2-3 zdaniach.
Zainstaluj Visual Studio z obciążeniem do WPF, utwórz nowy, pusty projekt "Aplikacja WPF (.NET)", uruchom go (bez zmiany kodu) i zrób zrzut ekranu domyślnego, pustego okna.
Typowe błędy
Instalacja Visual Studio bez obciążenia ".NET desktop development" — bez tego szablony projektów WPF w ogóle się nie pojawią. To najczęstszy problem na starcie tego działu.
Mylenie WPF z Windows Forms — to dwa RÓŻNE frameworki o różnej filozofii pracy; kod i podejście do projektowania interfejsu nie są przenoszalne wprost między nimi.
Oczekiwanie, że aplikacja WPF uruchomi się na macOS/Linux — WPF jest technologią WYŁĄCZNIE dla Windows. Do aplikacji wieloplatformowych desktopowych służy np. .NET MAUI (o którym więcej w dziale aplikacji mobilnych) albo wspomniany Qt.
Nawiązanie do egzaminu zawodowego
To realizacja INF.04.5.1 ("wykorzystuje środowisko programistyczne dla aplikacji desktopowych") i INF.04.5.2 ("wykorzystuje frameworki do programowania aplikacji desktopowych — WPF, Qt"). Od kolejnej lekcji zaczynamy pisać prawdziwy kod.