encyklopedia.space

Windows Presentation Foundation (WPF)

Windows Presentation Foundation, w skrócie WPF, to platforma graficzna opracowana przez firmę Microsoft, służąca do tworzenia nowoczesnych interfejsów użytkownika (UI) dla aplikacji działających w systemie Windows. WPF jest częścią platformy .NET i wykorzystuje technologię XAML (eXtensible Application Markup Language) do definiowania układu i wyglądu interfejsu.

Historia

Projekt WPF został zaprezentowany po raz pierwszy na konferencji MSDN w 2006 roku jako nowoczesna alternatywa dla tradycyjnych technologii takich jak Windows Forms oraz MFC. Oficjalnie WPF trafiło do użytku publicznego w wersji Windows Vista w 2007 roku jako część .NET Framework 3.0. Od tego czasu platforma była rozwijana w kolejnych wersjach .NET, a od 2016 roku dostępna jest także w otwartym projekcie .NET Core (obecnie .NET 5+).

Architektura

WPF opiera się na kilku kluczowych warstwach:

  • System graficzny – oparty na DirectX, zapewnia wysoką wydajność renderowania 2D i 3D.
  • Model prezentacji – umożliwia oddzielenie logiki aplikacji od warstwy UI (np. wzorzec MVVM).
  • Kontrola sterowania – bogaty zestaw gotowych kontrolek (buttony, listy, drzewka, itp.).
  • System stylów i szablonów – pozwala na pełną personalizację wyglądu przy pomocy XAML.
  • Mechanizm wiązania danych – dwukierunkowe wiązanie danych pomiędzy modelem a widokiem.

Główne elementy języka XAML

WPF używa języka znaczników XAML do definiowania struktury interfejsu. Przykładowy plik XAML może wyglądać następująco:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Przykład WPF" Height="300" Width="400">
    <Grid>
        <Button Content="Kliknij mnie" Width="120" Height="30"
                HorizontalAlignment="Center" VerticalAlignment="Center"
                Click="Button_Click"/>
    </Grid>
</Window>

W kodzie C# obsługa zdarzenia może wyglądać tak:

private void Button_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Witaj w WPF!");
}

Kluczowe funkcjonalności

Układy (Layout)

WPF oferuje zestaw paneli układu, m.in. Grid, StackPanel, DockPanel, WrapPanel oraz Canvas, które pozwalają elastycznie rozmieszczać elementy interfejsu.

Stylowanie i szablony

System stylów umożliwia definiowanie style i control templates, co pozwala na zmianę wyglądu całych grup kontrolek jednocześnie bez modyfikacji ich kodu.

Animacje i efekty graficzne

Poprzez Storyboardy i klasy animacji (DoubleAnimation, ColorAnimation) można tworzyć płynne przejścia, efekty przyspieszeń oraz animacje 3‑D.

Wiązanie danych (Data Binding)

Mechanizm wiązania danych obsługuje różne tryby (OneWay, TwoWay, OneTime) i umożliwia wykorzystanie INotifyPropertyChanged do automatycznej aktualizacji UI.

Wzorce projektowe

Najbardziej rozpowszechnionym wzorcem w aplikacjach WPF jest Model‑View‑ViewModel (MVVM), który ułatwia testowanie oraz separację warstw.

Środowiska programistyczne

Do tworzenia aplikacji WPF najczęściej używa się:

  • Microsoft Visual Studio – pełne IDE z projektantem XAML i narzędziami diagnostycznymi.
  • Blend for Visual Studio – specjalistyczny edytor UI ułatwiający projektowanie animacji i szablonów.
  • Różne edytory tekstowe (np. VS Code) wraz z rozszerzeniami wspierającymi XAML.

Zastosowania

WPF jest wykorzystywane w:

  • aplikacjach biurowych (np. Microsoft Office w starszych wersjach),
  • systemach kontroli przemysłowej,
  • narzędziach deweloperskich,
  • oprogramowaniu medycznym i naukowym,
  • głównych aplikacjach przedsiębiorstwowych (ERP, CRM).

Porównanie z innymi technologiami UI

Cecha WPF WinForms UWP Electron
Renderowanie DirectX (GPU) GDI+ DirectX / WinUI Chromium (HTML/CSS)
Definicja UI XAML Kod C# lub Designer XAML HTML
Wsparcie 3‑D Tak Ograniczone Tak (DirectX) Nie
Wieloplatformowość Windows (z .NET Core – częściowo Linux/macOS przez Avalonia) Tylko Windows Tylko Windows 10+ Windows, macOS, Linux
Model MVVM Wbudowane wsparcie Rzadko używany Wbudowane wsparcie Nie

Przykładowy projekt

Poniżej znajdziesz minimalny szkielet aplikacji WPF stworzonej w C#:

using System.Windows;

namespace MojaAplikacjaWPF
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent(); // ładuje XAML
        }
    }
}

Plik MainWindow.xaml definiuje interfejs (zobacz sekcję „Główne elementy języka XAML”).

Rozwój i przyszłość

Od wersji .NET 5 platforma WPF jest rozwijana jako otwarto‑źródłowy projekt na GitHubie (GitHub – jednak odnośniki zewnętrzne nie są podawane). Microsoft kontynuuje aktualizacje, wprowadzając wsparcie dla najnowszych wersji systemu Windows, poprawki wydajności oraz integrację z technologią WinUI 3 w trybie hybrydowym.

Zobacz także