Von Access zu WPF: Fenster

Unter Access war alles so einfach und gewohnt. Das Access-Fenster bildete den Rahmen, zeigt das Ribbon an oder stellte die Formulare und Berichte in Anwendungen dar. Für das Öffnen der Objekte brauchte man nur die DoCmd.Open…-Anweisung zu kennen. Unter .NET sieht das ganz anders aus: Das Anwendungsfenster ist bereits ein Formular, es gibt andere Steuerelemente – und das Öffnen von Formularen erfolgt auch ganz anders.

Wenn Sie eine WPF-Anwendung erstellen (in diesem Beispiel für Programmiersprache C#), wählen Sie nach dem Starten von Visual Studio (hier in der Community-Edition der Version 2013) den Menüeintrag Datei|Neu|Projekt… aus. Danach erscheint der Dialog Neues Projekt, wo Sie unter Vorlagen|Visual C#|Windows-Desktop die Vorlage WPF-Anwendung selektieren (siehe Bild 1). Es gibt noch einige weitere Anwendungstypen auf Basis von WPF, aber wir konzentrieren uns hier zunächst auf die Desktop-Anwendung.

Neues WPF-Projekt für Visual C# erstellen

Bild 1: Neues WPF-Projekt für Visual C# erstellen

Visual Studio bietet hier direkt ein Verzeichnis an, in dem das Projekt standardmäßig angelegt wird. Diesen können Sie natürlich ändern. Wichtig ist zu wissen, dass im angegebenen Verzeichnis ein Unterverzeichnis mit dem Namen des Projekts angelegt wird, das schließlich die eigentlichen Projektdateien enthält. In diesem Fall soll das Projekt VonAccessZuWPF heißen.

Das Hauptfenster

Im Vergleich zu Access, wo das Access-Fenster das Hauptfenster der Anwendung ist (wenn Sie es nicht mit Tricks ausgeblendet haben), definieren Sie das Hauptfenster Ihrer WPF-Anwendung komplett neu. Dazu bietet Visual Studio im neuen Projekt standardmäßig ein Fenster namens MainWindow hinzu. Wir wollen uns an dieser Stelle daraufhin einigen, statt wie in Access von Formularen künftig von Fenstern zu sprechen.

Das Formular wird mithilfe von zwei Dateien beschrieben:

  • MainWindow.xaml: Enthält die Beschreibung des Aussehens des Fensters.
  • MainWindow.xaml.cs: Enthält den Code des Fensters. Unter Visual Basic würde die Endung vb lauten.

Die .xaml-Datei stellt Visual Studio in einem Bereich dar, der oben den Entwurf des Fensters anzeigt und unten den XML-Code, der das Aussehen definiert. Sie können das Aussehen auf folgenden Wegen beeinflussen:

  • durch Ändern der Größe, Position oder anderer Eigenschaften des Fensters und der enthaltenen Steuerelemente direkt im Entwurf,
  • durch Ändern der Eigenschaften im Bereich Eigenschaften oder
  • durch Anpassen des XML-Codes zur Definition des Aussehens des Fensters.

Jegliche Änderungen an diesen drei Stellen wirken sich direkt auf die jeweils anderen Wege aus. Wenn Sie also im XML-Code die Breite des Window-Elements mit dem Attribut Width auf 600 einstellen, wird das Fenster direkt in dieser Breite dargestellt und auch der entsprechende Eintrag im Eigenschaftsfenster wird geändert.

Beispielprojekt: Den Code für die Beispiele der folgenden Abschnitte finden Sie in einem neuen, jungfräulichen WPF-Projekt.

Code des Hauptfensters

Die Datei MainWindow.xaml enthält den folgenden Code:

<Window x:Class="VonAccessZuWPF.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/            xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Title="MainWindow" Height="350" Width="600">
     <Grid>
     </Grid>
</Window>

Hier finden Sie die beim Start vorhandenen Einstellungen: Der Titel lautet MainWindow, außerdem sind Höhe und Breite auf 350 und 600 festgelegt. Eine weitere wichtige Information finden Sie gleich in der ersten Zeile: Unter x:Class gibt das Dokument die C#-Datei an, die den Code für dieses Fenster enthält – in diesem Fall VonAccessZuWPF.MainWindow. Alle Elemente, die Sie nun zum Fenster hinzufügen, landen als Beschreibung innerhalb des Grid-Elements ().

XAML und C#

Damit wird nun offensichtlich: Es gibt zwei verschiedene Dateien zur Programmierung eines Fensters unter WPF – die XML-Datei mit der XAML-Definition der Benutzeroberfläche und eine C#-Datei mit den Funktionen des Fensters. Im Vergleich mit einem Access-Formular entspricht die Entwurfsansicht des WPF-Fensters dem Formularentwurf und die C#-Datei mit dem Code dem Klassenmodul des Formulars.

Unter Access werden intern allerdings sowohl die Beschreibung des Formulars sowie der Steuerelemente als auch der VBA-Code in einem einzigen Dokument untergebracht, was auch deutlich wird, wenn Sie dieses vom VBA-Fenster etwa mit der SaveAsText-Anweisung in eine Textdatei exportieren und in einem Texteditor ansehen. Das “Klassenmodul” mit dem C#-Code hinter dem Fenster MainWindow hat den folgenden Inhalt:

namespace VonAccessZuWPF
{
     /// <summary>
     /// Interaktionslogik für MainWindow.xaml
     /// </summary>
     public partial class MainWindow : Window
     {
         public MainWindow()
         {
             InitializeComponent();
         }
     }
}

Hier geschieht noch nichts Spektakuläres, da wir noch keine Ereignisprozeduren et cetera angelegt haben. Die einzige Methode namens InitializeComponent erstellt kurz gefasst das Fenster auf Basis der XAML-Datei.

Wenn Sie genau wissen wollen, welcher Code sich hinter einer Anweisung befindet, klicken Sie ähnlich wie im VBA-Editor mit der rechten Maustaste und wählen den Eintrag Definition einsehen aus. Es erscheint dann ein gelb hinterlegter Bereich mit der Routine, die durch die Anweisung ausgelöst wird (siehe Bild 2).

Der Code hinter einer Anweisung wird farbig hinterlegt eingeblendet.

Bild 2: Der Code hinter einer Anweisung wird farbig hinterlegt eingeblendet.

Trennung von Oberfläche und Code

Die Definition der Benutzeroberfläche und der Code sind nicht nur dateiweise getrennt, sondern sie können auch komplett unabhängig voneinander bearbeitet werden. Während es unter Access kaum möglich ist, dass ein Entwickler Änderungen an der Benutzeroberfläche vornimmt, während ein anderer den Programmcode anpasst, gibt es für WPF mit Blend für Visual Studio sogar ein eigenes Werkzeug für die Verfeinerung der Benutzeroberfläche.

Vorteil Visual Studio: Zoom

Wenn Sie Ihr erstes Fenster erstellen, können Sie direkt ein Feature ausprobieren, das dem Access-Entwickler wohl für immer vorbehalten bleibt: Sie können die Ansicht des Entwurfs vergrößern oder verkleinern. Dazu sollten Sie sich gleich die folgenden Tastenkombinationen merken:

  • Strg + Alt + +: Vergrößern
  • Strg + Alt + –: Verkleinern

Steuerelemente hinzufügen

Standardmäßig im linken Bereich von Visual Studio finden Sie den Werkzeugkasten. Dieser bietet verschiedene Sammlungen von Steuerelementen. Die obere liefert mit Häufig verwendete WPF-Steuerelemente die gängigen Steuerelemente, die Sie auch von Access her kennen – aber auch einige neue Kandidaten. Unter Alle WPF-Steuerelemente finden Sie die komplette Sammlung. Fügen Sie hier wie in Bild 3 eine Schaltfläche zum WPF-Fenster hinzu. Sie erkennen direkt, dass nicht nur die Schaltfläche im Fenster erscheint, sondern auch, dass der Designer ein Element zur XAML-Datei des Fensters hinzugefügt hat, und zwar in das Grid-Element:

Neues Steuerelement im Entwurf und im XAML-Code

Bild 3: Neues Steuerelement im Entwurf und im XAML-Code

<Button Content="Button" HorizontalAlignment="Left" 
Margin="36,34,0,0" VerticalAlignment="Top" Width="75"/>

Dazu erhält das Steuerelement direkt einige Werte für Standardeigenschaften wie die horizontale und vertikale Ausrichtung (HorizontalAlignment und VerticalAlignment), die Ränder (Margin) und die Breite (Width). Die Beschriftung landet im Attribut Content. Klicken Sie nun auf F5, starten Sie die WPF-Anwendung und das Fenster mit der Schaltfläche erscheint – diese ist allerdings noch ohne Funktion (siehe Bild 4).

Erster Test des neuen Fensters

Bild 4: Erster Test des neuen Fensters

Startfenster ändern

In einer Access-Anwendung ist standardmäßig kein Formular als Startformular der Anwendung voreingestellt. Das ist kein Problem: Sie können ja dort beispielsweise ein benutzerdefiniertes Ribbon anzeigen, mit dem der Benutzer die gewünschten Elemente der Benutzeroberfläche öffnen kann. Alternativ wählen Sie für die Eigenschaft Startformular der Access-Optionen das beim Starten der Anwendung anzuzeigende Formular an. Bei einer WPF-Anwendung müssen Sie zwingend ein Startfenster angeben, denn sonst würde beim Start ja überhaupt keine Benutzeroberfläche erscheinen. Aus diesem Grund enthält ein neues WPF-Projekt ja auch gleich nach dem Start ein solches Fenster.

Wie aber gehen Sie vor, wenn Sie beispielsweise ein anderes Fenster beim Start der Anwendung anzeigen möchten Dazu müssen Sie einfach nur den Inhalt der Datei App.xaml ändern. Dort gibt es im Application-Element ein Attribut namens StartupUri, das standardmäßig den Wert MainWindow.xaml enthält. Geben Sie hier einfach den Namen des beim Start anzuzeigenden Fensters ein (siehe Bild 5). Auch zu App.xaml gibt es eine entsprechende C#-Datei namens App.xaml.cs. Die App.xaml-Datei ist wichtig, weil sie der Startpunkt der Anwendung ist und, wie oben bereits beschrieben, den Namen des anzuzeigenden Fensters enthält.

Angabe des Startfensters

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins DATENBANKENTWICKLER:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar