Sie sind hier: Wissen
Begriff Windows Presentation Foundation
Abkürzung WPF
Eintrag zuletzt aktualisiert am 19.02.2025

 Zur Stichwortliste unseres Lexikons

Was ist Windows Presentation Foundation ?

Die Windows Presentation Foundation (WPF, Codename "Avalon") ist eine Klassenbibliothek zur Entwicklung von graphischen Benutzeroberflächen (üblicherweise GUI Framework genannt).

WPF wurde in .NET Framework 3.0 (Jahr 2006) eingeführt und ist genau wie Windows Forms seit .NET Core 3.0 auch im modernen .NET verfügbar.

Der .NET-Namensraum für WPF ist System.Windows.

WPF und XAML wurden von Microsoft nicht nur als GUI-Framework für klassische Windows-Geschäftsanwendungen erschaffen, sondern erlaubt auch für Multimedia- und 3D-Anwendungen, die Darstellung von Dokumenten (Open XML Paper SpecificationXPS) sowie Browser-basierte Anwendungen (XAML Browser ApplicationXBAP). Für Dokumente und den Browser hat sich WPF aber nicht durchgesetzt. XBAP gibt es im modernen .NET nicht mehr. Der Namensraum System.Windows.Xps ist aber noch vorhanden. Da es neben den Entfall von XBAP kaum Unterschiede zwischen WPF im klassischen .NET Framework und modernen .NET gibt, ist eine Migration auf die neuste Version sehr unaufwändig.

XAML

Die Oberflächenbeschreibung in WPF basiert auf einer XML-basierten Sprache, die Microsoft XAML (eXtensible Application Markup Language) nennt. XAML vereint die Strukturbeschreibung, Inhalte, Layout, Design, Transformationen und Animationen zu einer einzigen Sprache – anders als bei Webseiten, wo diese Kompetenzen zwischen HTML und CSS aufgeteilt, teils aber auch vermischt sind (und in einigen Fällen auch JavaScript benötigt wird, um zu gleichen Ergebnissen wie in XAML zu kommen).

XAML ist eine XML-basierte Sprache, mit der einzelne .NET-Objekte und ganze Objektbäume in XML-Form ausdrückbar sind. Innerhalb von WPF wird dies zur Beschreibung von Oberflächenelementen wie <TextBlock>, <TextBox>, <Button>, <ListBox>, <ToolTip>, <Line>, <Polygon>, <MediaElement> u.v.m. verwendet. Elemente sind Teile von Containern, die die Anordnung bestimmen, z.B. <Canvas>, <Grid>, <DockPanel> und <Frame>. Zu jedem XAML-Element existiert eine gleichnamige .NET-Klasse in der .NET 3.0-Klassenbibliothek im Namensraum System.Windows in .NET-Assemblies PresentationCore.dll und PresentationFramework.dll.

WPF-Oberflächen können aber auch codebasiert erstellt werden, das aber eher selten ist und typischerweise nur in metadatenbasierten Anwendungen erfolgt, deren grafische Oberflächen erst dynamisch zur Laufzeit entstehen.

Trennung UI und Code

WPF erlaubt eine gute Trennung zwischen Oberflächenbeschreibung und Programmcode. Dafür hat sich eine modifizierte Version des Model-View-Pattern unter dem Namen Model-View-ViewModel (MVVM) etabliert. Wie zum Thema Windows Forms erwähnt, ist MVVM aber inzwischen auch in Windows Forms möglich. Dennoch bleiben die Möglichkeiten der Datenbindung in WPF denen in Windows Forms klar überlegen; es gibt in WPF eine deklarative Datenbindung für alle Eigenschaften inklusive erweiterbaren Typ-Konvertern. Binden kann man an andere GUI-Elemente oder beliebige Datenquellen in Form von typisierten .NET-Objekten.

Design

Zudem ist in WPF die Anpassung des Designs einer Benutzeroberfläche deutlich einfacher als in Windows Forms, denn alle WPF-Steuerelemente lassen sich nicht nur durch sogenannte Resource Dictionaries anpassen, sondern durch Control Templates auch grundsätzlich umgestalten. WPF-Elemente lassen sich beliebig kombinieren, z.B. kann ein Kontrollkästchen Teil eines Auswahlfeldes sein oder es kann ein Video-Hintergrund in einem Eingabefeld laufen. Zudem ist WPF besser als Windows Forms beim Responsive Design, also dem Anpassen einer Benutzeroberfläche an verschiedene Bildschirmgrößen. WPF verwendet vektorbasiertes Rendering. Daher lassen sich sehr einfach Anwendungen mit Vergrößerungsfunktionen (Zoom) erstellen bzw. Anwendungen, die auf unterschiedlichen Monitorgrößen nutzbar sind. WPF bietet eine integrierte Unterstützung für Transformationen und Animation von Oberflächenelementen. Die WPF-Eingabesteuerelemente erlauben Eingaben per Sprache und Stift.

Seit .NET 9.0 liefert Microsoft ein Resource Dictionary, mit dem WPF-Anwendungen das Fluent Design von Windows 11 annehmen können (auch unter Windows 10). WPF-Anwendungen haben ein moderneres Look and Feel als Windows Forms-Anwendungen; durch die Anwendung des Fluent Designs wird der optische Vorsprung von WPF noch größer. Mit WPF hat Microsoft die Themen Design und User Experience auf Windows deutlich vorangetrieben.

Rendering-Performance

WPF rendert hardwarebeschleunigt auf Basis von Microsoft DirectX-Technik (DirectX-Version 9; im modernen .NET kommt in WPF teilweise DirectX 11 zum Einsatz), dennoch sind WPF-Anwendungen oft nicht performanter als ein Windows Forms-Pendant, das direkt auf dem Betriebssystem-APIs aufsetzt; fallweise ist WPF sogar träger. Der .NET-Namensraum für WPF ist System.Windows.

Werkzeuge

Genau wie bei Windows Forms gibt es für WPF einen mächtigen WYSIWYG-Designer innerhalb von Visual Studio, der XAML-Code erzeugt. Viele WPF-Entwicklerinnen und -Entwickler bevorzugen die direkte Eingabe von XAML-Tags anstelle der Verwendung des Designers, weil sie beim Eintippen produktiver sind als mit der Maus. Die Lokalisierung von Anwendungen ist im WPF-Designer nicht so einfach wie bei Windows Forms. Neben dem Visual Studio-Designer gibt es mit Blend ein spezielles Designer-Werkzeug für WPF, das zunächst ab 2007 ein eigenständiges Programm war (erst Expression Interactive Designer hieß dann Microsoft Expression Blend). Seit dem Jahr 2012 gibt es nur noch das in Visual Studio integrierte Blend (Microsoft Blend for Visual Studio).

Im Gegensatz zu Windows Forms bietet WPF beim Debugging eine Live-Ansicht in der Entwicklungsumgebung und Hot Reloading, d.h. Entwicklerinnen und Entwickler können zur Entwicklungszeit die Oberfläche ändern und die Änderungen direkt in der laufenden Anwendung sehen, ohne die Anwendung beenden und neu starten zu müssen.

WPF-Steuerelemente

WPF liefert einige Steuerelemente für viele Fälle mit. Einen Überblick über die verfügbaren Steuerelemente findet man in der WPF-Anwendung "WPF Gallery", die es im Windows Store https://apps.microsoft.com/detail/9ndlx60wx4kq gibt. Wie bei Windows Forms gilt auch hier, dass man höherwertige Steuerelemente bei Drittanbietern zukaufen muss. Ein Ribbon-Steuerelement ist aber bei WPF dabei in der Klasse System.Windows.Controls.Ribbon.

Ausgewählte GUI-Komponentenanbieter für WPF

Telerik UI for WPF
https://telerik.com/wpf


DevExpress WPF Component Subscription
https://devexpress.com/products/net/controls/wpf


Infragistics Ultimate UI for WPF https://infragistics.com/products/wpf


Syncfusion WPF controls
https://syncfusion.com/wpf-controls


MESCIUS (vormals GrapeCity) ComponentOne WPF UI Controls
https://developer.mescius.com/componentone/wpf-ui-controls


Actipro Software WPF Controls
https://actiprosoftware.com/products/controls/wpf


Xceed Toolkit plus for WPF
https://xceed.com/xceed-toolkit-plus-for-wpf


Text Control
https://www.textcontrol.com/products/

Anwendungsarten

WPF unterstützt verschiedene Arten von GUIs in einer durchgängigen Bibliothek, insbesondere:
  • Klassische Desktop-Fenster ("Windows")
  • 3D-Grafiken
  • Multimedia
  • Dokumente (Open XML Paper SpecificationXPS --> hat sich als Konkurrenz zu Postscript und PDF nicht durchgesetzt!)
  • Browser-basierte Anwendungen (XAML Browser Application - XBAP, vgl. Browser-Plug-ins wie Macromedia Flash --> hat sich ebenfalls nicht durchgesetzt)

Versionsgeschichte

  • Die erste Version trug die Versionsnummer 3.0 und erschien im Rahmen von .NET Framework 3.0 im November 2006.
  • Zweite Version: 3.5 in .NET 3.5: Dezember 2007
  • Erweiterungen in 3.5 SP1 in .NET 3.5 SP1: August 2008
  • Erweiterungen (Steuerelemente) im Rahmen des WPF Toolkits: Oktober 2008
  • Seit .NET 4.0 ist jeweils mit dem .NET Framework eine neue WPF-Version mit (z.T. nur kleineren) Änderungen erschienen.
  • Am 23.9.2019 erschien WPF auch im Rahmen von .NET Core 3.0, läuft aber trotz der grundsätzlichen Plattformunabhängigkeit von .NET Core nur auf Windows. Nicht mehr möglich dort ist aber WPF im Browser (XBAP).
  • Seitdem gibt es mit jeder neuen Version des modernen .NET auch eine neue Version WPF mit kleineren Verbesserungen

Lernaufwand

Aufgrund der Mächtigkeit von WPF ist der Lernaufwand für WPF für Einsteiger größer als bei Windows Forms.

Verbreitung von WPF

WPF ist etabliert und bewährt. Daher kommt WPF in vielen .NET-Anwendungen zum Einsatz und es gibt auch immer wieder neue Anwendungen mit WPF. Früher sind einige Entwicklungsteams von Windows Forms auf WPF umgestiegen. Das findet man heutzutage kaum noch, denn erstens kann man mit einer Drittanbieterkomponentenbibliothek Vieles auch in Windows Forms erreichen und zweitens erscheint die Zukunftsperspektive von WPF und Windows Forms ähnlich, d.h. es gibt kleinere Verbesserungen nur keine großen Innovationen mehr.

Migration zwischen WPF im klassischen .NET und modernen .NET

Da es neben dem Entfall von XBAP kaum Unterschiede zwischen WPF im klassischen .NET und modernen .NET gibt, ist eine Migration auf die neuste Version sehr unaufwändig.

XBAP gibt es im modernen .NET nicht mehr. Der Namensraum System.Windows.Xps ist aber noch vorhanden.

Integration von WPF mit anderen Techniken

WPF und die Vorgängertechniken lassen sich übrigens integrieren: WPF bietet eingebaute Interoperabilität zu Win32- und Windows Forms-Benutzerschnittstellen, d.h., WPF-Anwendungen können Windows Forms- oder Win32-Steuerelemente enthalten. Umgekehrt ist ein WPF-Steuerelement in Win32- oder Windows Forms-Fenster einbindbar. Bei der Installation gibt es die gleichen Möglichkeiten wie bei Windows Forms.

Umfang der Neuerungen im modernen .NET

WPF hat in den letzten modernen .NET-Versionen wenig Neuerungen erhalten, deutlich weniger als Windows Forms! Meist lagen die Verbesserungen nur im Bereich Performance und Accessibility. Seit .NET 6.0 laufen WPF-Anwendungen auch auf Windows Arm64-Systemen. Erst in .NET 8.0 hat Microsoft ein großes Problem von WPF gelöst, das all die Jahre lang den Einsatz von WPF-Anwendungen für Remote Desktops erschwerte: Bisher war Software-Rendering (CPU) der Standard bei Verbindungen mit dem Remote Desktop Protocol (RDP). Erst ab .NET 9.0 lässt sich über einen Switch Hardware-Rendering (GPU) einschalten. In .NET 8.0 hat Microsoft zudem die Klasse OpenFolderDialog ergänzt.
https://www.dotnetpro.de/workout/hardware/reden-2796110.html

Eine dritte größere Neuerung für WPF gab in .NET 9.0, das am 12. November 2025 erschienen ist mit dem Fluent Design (Runde Ecken, Farben, Themes via PresentationFramework.Fluent/Fluent.xaml) einschließlich Unterstützung für Dark Mode von Windows 10 und 11.

Eigenschaften von WPF

  • Oberflächen können wahlweise in Programmcode (wie in Windows Forms) oder – bevorzugt – durch die XML-basierte Extensible Application Markup Language (XAML) definiert werden.
  • Das Rendering erfolgt intern über DirectX.
  • XAML fördert eine Trennung von Code und Gestaltung. In Windows Forms wurde die Benutzerober-fläche durch Code beschrieben, der – auch wenn in einer eigenen "Designer-Datei" getrennt – doch sehr eng mit dem Programmcode verzahnt war. In WPF kann man durch XAML viele Dinge ausdrücken (z.B. Datenbindung), die in Windows Forms nicht in der Designer-Datei untergebracht werden konnten. Für Windows Forms gab es als einziges Gestaltungswerkzeug den in Visual Studio eingebauten Designer. Für WPF gibt es eigene Produkte für die Oberflächengestalter, z.B. Microsoft Expression Blend. Dadurch können Benutzeroberflächen von Anwendungen einfacher von ausgebildeten Gestaltern erstellt werden. Bisher werden Benutzeroberflächen oft von Softwareentwicklern erstellt, denen es an einer Ausbildung im Bereich Ästhetik und Benutzerfreundlichkeit fehlt.
  • WPF-Oberflächen laufen als eigenständige Windows-Fenster oder im Fenster eines Webbrowsers (nur klassisches .NET Framework)
  • WPF-Anwendungen können als clientseitige Browser-Anwendungen (nur klassisches .NET Framework) laufen, verwenden dann jedoch kein HTML, sondern setzen WPF auf dem Client voraus. Hier gibt es zwei Alternativen: Vollständiges WPF als XML Browser Application (XBAP) setzt ein vollständiges .NET Framework auf dem Client voraus. Silverlight bietet hingegen einen reduzierten Umfang von WPF und .NET und läuft auf mehr Plattformen.
  • Die Anzeige ist vektorbasiert und bietet daher eine gute Darstellung unabhängig von der Größe des Anzeigegeräts. (Um eine gute Darstellung auf allen Bildschirmgrößen und -auflösungen zu erzielen, verwendet WPF als Einheit sogenannte geräteunabhängige Pixel, die dem 96. Teil eines Inch entsprechen.)
  • Unterstützung für an die Fenstergröße anpassbare Anordnung der visuellen Elemente
  • Steuerelemente können sich der Größe ihres Inhalts anpassen.
  • Beliebige Komposition: Elemente lassen sich beliebige kombinieren, z.B. Kann ein Kontrollkästchen Teil einer Auswahlfeldes sein oder ein Video-Hintergrund für eine Eingabefeld.
  • WPF bietet gegenüber Windows Forms ein wesentlich ausgeprägteres Ereignissystem und eine Abstraktion bei der Bindung von Oberflächenelemente an Befehle, durch das im aktuellen Kontext nicht verfügbare Elemente sofort ausgeblendet werden.
  • Unterstützung für 2-D- und 3-D-Grafiken
  • Unterstützung für Navigationsanwendungen (Hyperlinks und Vor / Zurück im Stil einer Webanwen-dung)
  • Unterstützung für fest und flexibel umbrechende Dokumente (ohne Programmcode)
  • Deklarative Datenbindung für alle Eigenschaften inklusive erweiterbaren Typ-Konvertern
  • Multimedia: Abspielen von Musik und Videos
  • Transformationen und Animation von Oberflächenelementen
  • Definition von wieder verwendbaren Formatvorlagen (Styles): Durch die Definition wiederverwendba-ren Formatvorlagen lassen sich einheitliche Gestaltungsmerkmale auf visuelle Elemente anwenden. Durch den Austausch der Formatvorlagen sind schnell gestalterische Anpassungen möglich – wie man es von Cascading Style Sheets im Web kennt.
  • Definition von eigenen, wiederverwendbaren Steuerelementen (User Controls)
  • Installation über Xcopy-Deployment, klassische Installationsroutinen (inklusive Microsoft Windows Installer - MSI) oder automatischen Download (einschließlich Click-Once-Deployment)
  • WPF bietet eingebaute Interoperabilität zu Win32- und Windows Forms-Benutzerschnittstellen, d.h., WPF-Anwendungen können Windows Forms- oder Win32-Steuerelemente enthalten. Umgekehrt ist ein WPF-Steuerelement in Win32- oder Windows Forms-Fenster einbindbar.

Beispiele zu WPF

Den Startpunkt einer Anwendung markieren ein <Application>-Element und das StartingUp-Ereignis der gleichnamigen Klassen. Neben klassischen Windows-Fenstern kann der Entwickler mit WPF auch mehrseitige Navigationsanwendungen (vergleichbar mit der Bedienung von Web-Anwendungen) sowie Dokumente (ohne Programmcode) definieren. WPF-Dokumente sind ein Bestandteil von XPS-Paketen (zu XPS siehe Hauptext).

Die Gestaltung von Oberflächen erfolgt in XAML durch so genannte Panel-Elemente. Es gibt verschiedene Typen von Panel-Elementen (z.B. StackPanel, DockPanel, Grid, Canvas, TabPanel), die ineinander verschachtelt sein können. Um eine gute Darstellung auf allen Bildschirmgrößen und -auflösungen zu erzielen, verwendet WPF als Einheit so genannte geräteunabhängigen Pixel, die dem 96. Teil eines Inches entsprechen. Durch Formatvorlagen (Styles) kann der Entwickler Panel und Steuerelemente auf einfache Weise einheitlich formatieren. Wie Listing 3 zeigt, können Styles durch Trigger an Ereignisse gebunden sein, sodass die Gestaltung sich bei Benutzeraktionen ändert, ohne dass der Entwickler dazu Programmcode schreiben muss. XAML gestattet auch die deklarative Erstellung von Animationen (Listing 4).

Listing 1: XAML-Code für eine einfache WPF-Anwendung

<Window x:Class="Hauptfenster"
xmlns="http://schemas.microsoft.com/winfx/avalon/2005"
xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"
Text="WPF-Demo von Dr. Holger Schwichtenberg / www.IT-Visions.de" Width="600" Height="180"
>
<StackPanel>
<TextBlock FontSize="18" Foreground="Red" >Dies ist ein Beispiel für eine einfache Avalon-Anwendung</TextBlock>
<TextBlock>Bitte geben Sie in die Textbox ihren Namen ein:</TextBlock>
<TextBox Name="C_Name" Width="300" HorizontalAlignment="Left" Margin="0,10,10,10" ToolTip="Ihren Namen bitte hier eingeben!" Text="Holger Schwichtenberg">

</TextBox>
<StackPanel Name="Schaltflaechen" Orientation="Horizontal">
<Button Name="C_Start" VerticalAlignment="Top">
Start
</Button>
<Button Name="C_Ende" VerticalAlignment="Top" Width="100">
Ende
</Button>
</StackPanel>
</StackPanel>
</Window>

Listing 2: Programmcode für die WPF-Anwendung aus Listing 1

Partial Public Class Hauptfenster
Inherits Window

Private Sub OnLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
End Sub

Private Sub ButtonClick1(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles C_Start.Click
Me.C_Start.RenderTransform = New System.Windows.Media.RotateTransform(10)
MsgBox("Hallo " & Me.C_Name.Text & "!")
Me.C_Start.RenderTransform = New System.Windows.Media.RotateTransform(0)
End Sub

Private Sub ButtonClick2(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles C_Ende.Click
Me.Close()
End Sub
End Class

Listing 3: Anwendungsweite Formatvorlagen sorgen für eine einheitliche Gestaltung

<Application x:Class="MyApp"
xmlns="http://schemas.microsoft.com/winfx/avalon/2005"
xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"
>
<Application.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Control.Foreground" Value="Red"/>
<Setter Property="Control.Background" Value="Yellow"/>
<Style.Triggers>
<Trigger Property="Button.IsMouseOver" Value="true">
<Setter Property = "Background" Value="Red"/>
<Setter Property="Control.Foreground" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
</Application.Resources>
</Application>


Listing 4: Die Ende-Schaltfläche soll zur Hervorhebung laufend Ihre Größe zwischen 50 und 100 Pixeln ändern.

<!-- Fortlaufende Animation für die Ende-Schaltfläche -->
<Window.Storyboards>
<SetterTimeline TargetName="C_Ende" Path="(Button.Width)">
<DoubleAnimation From="50" To="100" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" />
</SetterTimeline>
</Window.Storyboards>

Weitere Ressoucen auf dieser Website

 FAQ zu dem Buch ".NET 3.0 Crashkurs"

Beratung & Support

Schulungen zu diesem Thema

 Windows Presentation Foundation (WPF) - Basiswissen
 Windows Presentation Foundation (WPF) für typische Geschäftsanwendungen
 Windows-Desktop-Anwendungen: Von den .NET- und C#-Grundlagen zu Windows Forms und Windows Presentation Foundation (WPF)
 Windows Presentation Foundation (WPF) - Architektur
 .NET Akademie: Windows-Desktop-Anwendungen mit der Windows Presentation Foundation (WPF) (3-Tages-Agenda des öffentlichen Seminars)
 Windows Presentation Foundation (WPF) / XAML für Grafiker/Designer/UX-Engineers
 Windows Presentation Foundation (WPF) - Aufbauwissen
 Performanceanalyse und Performancesteigerung (Tuning/Leistungstipps) von WPF-Anwendungen
 Model-View-ViewModel (MVVM)-Pattern mit XAML für WPF und/oder Windows UI Library (WinUI)
 Prism - Composite UI Framework für WPF
 Windows UI Library 3 (WinUI 3) für Umsteiger von WPF
 Microsoft Expression Blend - Benutzerschnittstellendesign für XAML-basierte Oberflächen (WPF, UWP, WinUI)
 Neuerungen in .NET Core 3.0/3.1 gegenüber Version 2.x (inkl. ASP.NET Core, Entity Framework Core, WPF und Windows Forms)
 Umstieg von .NET-Desktop-Entwicklung (WPF/Windows Forms) auf Webentwicklung (ASP.NET/ASP.NET Core + JavaScript/TypeScript mit Webframeworks wie Angular, Vue.js oder React)
 Umstieg auf WPF Core 8.0/9.0 in .NET 8.0/9.0 (Umstellung/Migration von WPF-Anwendungen von .NET Framework auf .NET 6.0/7.0/8.0)
 Hybride Anwendungen mit .NET und CefSharp (Einbindungen von Webanwendungen in WPF- und Windows Forms-Desktopanwendungen)
 .NET 3.5-Crashkurs - Überblick über das .NET Framework 3.5 und Visual Studio 2008 für Umsteiger von .NET 2.0/3.0
 .NET-Basisklassenbibliothek (.NET Base Class Library)
 Visual Studio für Einsteiger
 .NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick
 Windows-Anwendungen mit Windows Forms - Aufbauwissen
 Windows Vista für Entwickler (Programmieren für Windows Vista)
 .NET im Überblick für Softwareentwickler
 Microsoft Reports (RPT) - Berichte mit Visual Studio erstellen
 Visual Studio Tipps & Tricks - Effizienter Programmieren mit Visual Studio
 Umstieg auf .NET 8.0/9.0 - Entwicklerworkshop mit allen Anwendungsgebieten (Umstellung/Migration von klassischem .NET Framework zu .NET 6.0/8.0/9.0)
 Microsoft 365 für Softwareentwickler (Microsoft 365 Development)
 .NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für das klassische .NET Framework und/oder das moderne .NET)
 Extensible Application Markup Language (XAML)
 Avalonia - Cross-Plattform-GUI-Anwendungen mit .NET und XAML
 Anfrage für eine individuelle Schulung zum Thema Windows Presentation Foundation WPF  Gesamter Schulungsthemenkatalog