Tutorial: Erstellen einer neuen WPF-App mit .NET
In diesem Lernprogramm erfahren Sie, wie Sie visual Studio zum Erstellen einer neuen Windows Presentation Foundation (WPF)-App verwenden. Mit Visual Studio fügen Sie Fenstern Steuerelemente hinzu, um die Benutzeroberfläche der App zu entwerfen, und behandeln Eingabeereignisse von diesen Steuerelementen, um mit dem Benutzer zu interagieren. Am Ende dieses Lernprogramms haben Sie eine einfache App, die einem Listenfeld Namen hinzufügt.
In diesem Tutorial:
- Erstellen Sie eine neue WPF-App.
- Hinzufügen von Steuerelementen zu einem Fenster
- Behandeln von Steuerelementereignissen zur Bereitstellung von App-Funktionen.
- Führen Sie die App aus.
Im Folgenden finden Sie eine Vorschau der app, die beim Ausführen dieses Lernprogramms erstellt wurde:
Voraussetzungen
Achtung
.NET 6 wird nicht mehr unterstützt. Es wird empfohlen, .NET 9.0 zu verwenden.
- Visual Studio 2022, Version 17.0 oder höher
- Wählen Sie die Workload .NET Desktop-Entwicklung aus
- Wählen Sie eine einzelne .NET 6-Komponente aus
Achtung
.NET 7 wird nicht mehr unterstützt. Es wird empfohlen, .NET 9.0 zu verwenden.
- Visual Studio 2022, Version 17.4 oder höher
- Wählen Sie die Workload .NET Desktop-Entwicklung aus
- Wählen Sie eine einzelne .NET 7-Komponente aus.
- Visual Studio 2022, Version 17.8 oder höher
- Wählen Sie die Workload .NET Desktop-Entwicklung aus
- Auswählen der einzelnen .NET 8-Komponente
- Visual Studio 2022, Version 17.12 oder höher
- Wählen Sie die Workload .NET Desktop-Entwicklung aus
- Auswählen der einzelnen .NET 9-Komponente
Erstellen einer WPF-App
Für die Erstellung einer neuen App müssen Sie erst Visual Studio öffnen und die App dann aus einer Vorlage erstellen.
Öffnen Sie Visual Studio.
Wählen Sie Neues Projekt erstellen aus.
Geben Sie in das Feld Nach Vorlagen suchenwpf ein, und drücken Sie die EINGABETASTE.
Wählen Sie aus der Dropdownliste Codesprache die Option C# oder Visual Basic aus.
Wählen Sie aus der Vorlagenliste WPF-Anwendung aus, und wählen Sie dann Weiter aus.
Wichtig
Wählen Sie nicht die Vorlage WPF-Anwendung (.NET Framework) aus.
Die folgende Abbildung zeigt Projektvorlagen für C# und Visual Basic .NET. Wenn Sie den Codesprachenfilter angewendet haben, wird nur die Vorlage für diese Sprache angezeigt.
Gehen Sie im Fenster Neues Projekt konfigurieren folgendermaßen vor:
- Geben Sie Names im Feld Projektname ein.
- Aktivieren Sie das Kontrollkästchen Legen Sie die Projektmappe und das Projekt im selben Verzeichnis ab.
- Wählen Sie optional einen anderen Speicherort für Ihren Code aus.
- Wählen Sie die Schaltfläche Weiter aus.
Wählen Sie im Fenster Zusätzliche Informationen im Feld Zielframework die Option .NET 6.0 (langfristiger Support) aus. Wählen Sie die Schaltfläche Erstellen.
Öffnen Sie Visual Studio.
Wählen Sie Neues Projekt erstellen aus.
Geben Sie in das Feld Nach Vorlagen suchenwpf ein, und drücken Sie die EINGABETASTE.
Wählen Sie aus der Dropdownliste Codesprache die Option C# oder Visual Basic aus.
Wählen Sie aus der Vorlagenliste WPF-Anwendung aus, und wählen Sie dann Weiter aus.
Wichtig
Wählen Sie nicht die Vorlage WPF-Anwendung (.NET Framework) aus.
Die folgende Abbildung zeigt Projektvorlagen für C# und Visual Basic .NET. Wenn Sie den Codesprachenfilter angewendet haben, wird nur die Vorlage für diese Sprache angezeigt.
Gehen Sie im Fenster Neues Projekt konfigurieren folgendermaßen vor:
- Geben Sie Names im Feld Projektname ein.
- Aktivieren Sie das Kontrollkästchen Legen Sie die Projektmappe und das Projekt im selben Verzeichnis ab.
- Wählen Sie optional einen anderen Speicherort für Ihren Code aus.
- Wählen Sie die Schaltfläche Weiter aus.
Wählen Sie im Fenster Zusätzliche Informationen im Feld Zielframework die Option .NET 7.0 (Support mit Standardlaufzeit) aus. Wählen Sie die Schaltfläche Erstellen.
Öffnen Sie Visual Studio.
Wählen Sie Neues Projekt erstellen aus.
Geben Sie in das Feld Nach Vorlagen suchenwpf ein, und drücken Sie die EINGABETASTE.
Wählen Sie aus der Dropdownliste Codesprache die Option C# oder Visual Basic aus.
Wählen Sie aus der Vorlagenliste WPF-Anwendung aus, und wählen Sie dann Weiter aus.
Wichtig
Wählen Sie nicht die Vorlage WPF-Anwendung (.NET Framework) aus.
Die folgende Abbildung zeigt Projektvorlagen für C# und Visual Basic .NET. Wenn Sie den Codesprachenfilter angewendet haben, wird nur die Vorlage für diese Sprache angezeigt.
Gehen Sie im Fenster Neues Projekt konfigurieren folgendermaßen vor:
- Geben Sie Names im Feld Projektname ein.
- Aktivieren Sie das Kontrollkästchen Legen Sie die Projektmappe und das Projekt im selben Verzeichnis ab.
- Wählen Sie optional einen anderen Speicherort für Ihren Code aus.
- Wählen Sie die Schaltfläche Weiter aus.
Wählen Sie im Fenster "Zusätzliche Informationen" .NET 8.0 (Long Term Support) für Target Framework aus. Wählen Sie die Schaltfläche Erstellen.
Öffnen Sie Visual Studio.
Wählen Sie Neues Projekt erstellen aus.
Geben Sie in das Feld Nach Vorlagen suchenwpf ein, und drücken Sie die EINGABETASTE.
Wählen Sie aus der Dropdownliste Codesprache die Option C# oder Visual Basic aus.
Wählen Sie aus der Vorlagenliste WPF-Anwendung aus, und wählen Sie dann Weiter aus.
Wichtig
Wählen Sie nicht die Vorlage WPF-Anwendung (.NET Framework) aus.
Die folgende Abbildung zeigt Projektvorlagen für C# und Visual Basic .NET. Wenn Sie den Codesprachenfilter angewendet haben, wird nur die Vorlage für diese Sprache angezeigt.
Gehen Sie im Fenster Neues Projekt konfigurieren folgendermaßen vor:
- Geben Sie Names im Feld Projektname ein.
- Aktivieren Sie das Kontrollkästchen Legen Sie die Projektmappe und das Projekt im selben Verzeichnis ab.
- Wählen Sie optional einen anderen Speicherort für Ihren Code aus.
- Wählen Sie die Schaltfläche Weiter aus.
Wählen Sie im Fenster "Zusätzliche Informationen" .NET 9.0 (Standard Term Support) für Target Framework aus. Wählen Sie die Schaltfläche Erstellen.
Sobald die App generiert wurde, sollte Visual Studio das XAML-Designerfenster für das Standardfenster "MainWindow" öffnen. Wenn der Designer nicht sichtbar ist, doppelklicken Sie im fenster Projektmappen-Explorer auf die Datei "MainWindow.xaml", um den Designer zu öffnen.
Wichtige Visual Studio-Komponenten
Die Unterstützung für WPF in Visual Studio verfügt über fünf wichtige Komponenten, mit denen Sie interagieren, während Sie eine App erstellen:
Projektmappen-Explorer
Alle Projektdateien, Code, Fenster, Ressourcen werden in diesem Fenster angezeigt.
Eigenschaften
In diesem Fenster werden Eigenschafteneinstellungen angezeigt, die Sie basierend auf dem ausgewählten Element konfigurieren können. Wenn Sie z. B. ein Element im Projektmappen-Explorer auswählen, werden die Eigenschafteneinstellungen für diese Datei angezeigt. Wenn Sie ein Objekt im Designer auswählen, werden Einstellungen für das Element angezeigt. In Bezug auf das vorherige Bild wurde die Titelleiste des Fensters im Designer ausgewählt.
Werkzeugkasten
Die Toolbox enthält alle Steuerelemente, die Sie einer Entwurfsoberfläche hinzufügen können. Wenn Sie der aktuellen Oberfläche ein Steuerelement hinzufügen möchten, doppelklicken Sie auf das Steuerelement, oder legen Sie das Steuerelement auf der Oberfläche ab. Es ist üblich, stattdessen das XAML-Code-Editor-Fenster zum Entwerfen einer Benutzeroberfläche (UI) zu verwenden, während sie das XAML-Designerfenster verwenden, um eine Vorschau der Ergebnisse anzuzeigen.
XAML-Designer
Dieser Designer wird für XAML-Dokumente verwendet. Hierbei handelt es sich um eine interaktive Oberfläche, in die Sie Objekte per Drag & Drop aus der Toolbox verschieben können. Indem Sie Elemente im Designer auswählen und verschieben, können Sie die Benutzeroberfläche für Ihre App visuell erstellen.
Wenn der Designer und der Editor geöffnet sind, werden Änderungen in einem Bereich auch im anderen übernommen.
Wenn Sie Elemente im Designer auswählen, werden im Eigenschaftenfenster die Eigenschaften und Attribute zu diesem Objekt angezeigt.
XAML-Code-Editor
Dieser XAML-Code-Editor wird für XAML-Dokumente verwendet. Mit dem XAML-Code-Editor können Sie die Benutzeroberfläche selbst erstellen – ganz ohne Designer. Der Designer legt möglicherweise automatisch Eigenschaften für ein Steuerelement fest, wenn das Steuerelement im Designer hinzugefügt wird. Der XAML-Code-Editor bietet Ihnen viel mehr Kontrolle.
Wenn der Designer und der Editor geöffnet sind, werden Änderungen in einem Bereich auch im anderen übernommen. Während Sie im Code-Editor im Text caret navigieren, werden im Eigenschaftenfenster die Eigenschaften und Attribute zu diesem Objekt angezeigt.
Erläuterungen zum XAML-Code
Nach der Projekterstellung wird der XAML-Code-Editor geöffnet. Er enthält nur den XAML-Code, der zum Anzeigen des Fensters benötigt wird. Wenn der Editor nicht geöffnet ist, doppelklicken Sie im fenster Projektmappen-Explorer auf das Element "MainWindow.xaml". Der XAML-Code sollte folgendem Beispiel entsprechen:
<Window x:Class="Names.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Names"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>
Wichtig
Wenn Sie in Visual Basic codieren, unterscheidet sich der XAML-Code geringfügig von dem x:Class=".."
Attribut. XAML in Visual Basic verwendet den Klassennamen des Objekts und lässt den Namespace der Klasse weg.
Um den XAML-Code besser zu verstehen, lassen Sie uns es aufschlüsseln. XAML ist einfach XML, das von WPF verarbeitet wird, um eine Benutzeroberfläche zu erstellen. Sie sollten mindestens mit den Grundlagen zu XML vertraut sein, um den XAML-Code zu verstehen.
Der Dokumentstamm <Window>
stellt den Typ des Objekts dar, das von der XAML-Datei beschrieben wird. In diesem Fall sind acht Attribute deklariert, die in der Regel in eine der folgenden drei Kategorien fallen:
XML-Namespaces
Ein XML-Namespace stellt die Struktur für die XML-Datei bereit, indem er festlegt, welche XML-Inhalte in der Datei deklariert werden können.
Das Hauptattribut
xmlns
importiert den XML-Namespace für die gesamte Datei. In diesem Fall ordnet sie diesen zudem den Typen zu, die von WPF deklariert wurden. Die anderen XML-Namespaces deklarieren ein Präfix und importieren andere Typen und Objekte für die XAML-Datei. Der Namespacexmlns:local
deklariert beispielsweise das Präfixlocal
und ordnet die von Ihrem Projekt im CodenamespaceNames
deklarierten Objekte zu.x:Class
-AttributDieses Attribut ordnet den
<Window>
vom Code definierten Typ zu: der MainWindow.xaml.cs - oder MainWindow.xaml.vb datei, derNames.MainWindow
Klasse in C# undMainWindow
Visual Basic.Title
-AttributJedes normale Attribut, das für ein XAML-Objekt deklariert ist, legt eine Eigenschaft dieses Objekts fest. In diesem Fall legt das Attribut
Title
die EigenschaftWindow.Title
fest.
Ändern des Fensters
Für unsere Beispiel-App ist das Fenster zu groß, und die Titelleiste ist nicht aussagekräftig. Das ändern wir gleich.
Führen Sie zunächst die App aus, indem Sie die F5-TASTE drücken oder im Menü "Debuggen> auswählen.
Das Standardfenster, das von der Vorlage generiert wird, wird ohne Steuerelemente und ein Titel von "MainWindow" angezeigt:
Ändern Sie den Titel des Fensters, indem Sie die
Title
Einstellung aufNames
.Ändern Sie die Größe des Fensters, indem Sie die
Width
Einstellung auf180
undHeight
auf .260
<Window x:Class="Names.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Names" mc:Ignorable="d" Title="Names" Height="180" Width="260"> <Grid> </Grid> </Window>
Vorbereiten des Layouts
WPF bietet ein ausgereiftes Layoutsystem mit vielen unterschiedlichen Layoutsteuerelementen. Mit Layoutsteuerelementen können die Position und die Größe untergeordneter Steuerelemente geändert werden – und das sogar automatisch. In dieser XAML-Datei wird das Standard-Layoutsteuerelement <Grid>
bereitgestellt.
Mit dem Rastersteuerelement können Sie Zeilen und Spalten wie eine Tabelle definieren und Steuerelemente innerhalb der Grenzen einer bestimmten Zeilen- und Spaltenkombination platzieren. Sie können beliebig viele untergeordnete Steuerelemente oder andere Layoutsteuerelemente zum Raster hinzufügen. Sie können z. B. ein anderes <Grid>
Steuerelement in einer bestimmten Zeilen- und Spaltenkombination platzieren, und das neue Raster kann dann weitere Zeilen und Spalten definieren und über eigene untergeordnete Elemente verfügen.
Das Rastersteuerelement platziert seine untergeordneten Steuerelemente in Zeilen und Spalten. Für ein Raster ist immer jeweils eine Zeile und eine Spalte deklariert. Das bedeutet, dass ein Raster standardmäßig eine Zelle ist. Das bietet Ihnen nicht viel Flexibilität beim Platzieren der Steuerelemente.
Passen Sie das Layout des Rasters für die steuerelemente an, die für diese App erforderlich sind.
Fügen Sie dem
<Grid>
Element ein neues Attribut hinzu:Margin="10"
.Diese Einstellung bringt das Raster von den Fensterrändern ein und macht es etwas schöner.
Definieren Sie zwei Zeilen und zwei Spalten, und teilen Sie das Raster in vier Zellen auf:
<Grid Margin="10"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> </Grid>
Wählen Sie das Raster im XAML-Code-Editor oder im XAML-Designer aus. Sie sehen, dass der XAML-Designer jede Zeile und Spalte anzeigt:
Hinzufügen des ersten Steuerelements
Nachdem das Raster konfiguriert wurde, können wir mit dem Hinzufügen von Steuerelementen beginnen. Beginnen Sie mit dem Label-Steuerelement.
Erstellen Sie nach den Zeilen- und Spaltendefinitionen ein neues
<Label>
Element innerhalb des<Grid>
Elements. Legen Sie den Inhalt des Elements auf den Zeichenfolgenwert vonNames
:<Grid Margin="10"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Label>Names</Label> </Grid>
Das Element
<Label>Names</Label>
definiert den Inhalt vonNames
. Manche Steuerelemente können Inhalt verarbeiten, andere nicht. Der Inhalt eines Steuerelements wird der EigenschaftContent
zugeordnet. Verwenden Sie das folgende Format, um den Inhalt über die XAML-Attributsyntax festzulegen:<Label Content="Names" />
. Mit beiden Methoden wird der Inhalt der Bezeichnung so festgelegt, dass der TextNames
angezeigt wird.Beachten Sie, dass die Beschriftung die Hälfte des Fensters einnimmt, da sie automatisch an die erste Zeile und Spalte des Rasters positioniert wurde. Für die erste Zeile wird jedoch nicht so viel Platz benötigt, da diese nur für die Bezeichnung verwendet wird.
Ändern Sie das Attribut
Height
des ersten<RowDefinition>
-Elements von*
inAuto
.Der Wert
Auto
passt die Größe der Rasterzeile automatisch an den Inhalt an – in diesem Fall an das Label-Steuerelement.<Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions>
Jetzt sehen Sie, dass die Bezeichnung im Designer nur noch einen geringen Anteil der verfügbaren Höhe einnimmt. So bleibt mehr Platz für die nächste Zeile.
Platzierung von Steuerelementen
Nun wird näher auf das Platzieren von Steuerelementen eingegangen. Die im vorherigen Abschnitt erstellte Beschriftung wurde automatisch in Zeile 0 und Spalte 0 des Rasters platziert. Die Nummerierung für Zeilen und Spalten beginnt bei 0 und erhöht um 1. Das Steuerelement kennt die Eigenschaften des Rasters nicht und definiert keine Eigenschaften, um seine Position im Raster zu steuern.
Doch wie weisen Sie ein Steuerelement an, eine andere Zeile und/oder Spalte zu verwenden, wenn es die Eigenschaften des Rasters nicht kennt? Die Antwort lautet: durch angefügte Eigenschaften. Das Raster nutzt das ausgereifte Eigenschaftensystem von WPF.
Das Rastersteuerelement definiert neue Eigenschaften, die die untergeordneten Steuerelemente an sich selbst anfügen können. Die Eigenschaften sind für das Steuerelement selbst nicht vorhanden, sie stehen dem Steuerelement zur Verfügung, sobald es dem Raster hinzugefügt wurde.
Das Raster definiert zwei Eigenschaften, um die Zeilen- und Spaltenposition eines untergeordneten Steuerelements zu bestimmen: Grid.Row
und Grid.Column
. Wenn diese Eigenschaften im Steuerelement ausgelassen werden, wird impliziert, dass diese den Standardwert 0 aufweisen. Das Steuerelement wird also in Zeile 0
und Spalte 0
des Rasters platziert. Ändern Sie die Position des Steuerelements <Label>
, indem Sie das Attribut Grid.Column
auf 1
festlegen:
<Label Grid.Column="1">Names</Label>
Beachten Sie, dass die Beschriftung in die zweite Spalte verschoben wurde. Sie können die angefügten Eigenschaften Grid.Row
und Grid.Column
verwenden, um die Steuerelemente zu platzieren, die Sie als Nächstes erstellen. Legen Sie vorerst jedoch wieder Spalte 0 für die Bezeichnung fest.
Erstellen eines Listenfelds für Namen
Da die Größe des Rasters jetzt passend eingestellt und die Bezeichnung erstellt wurde, können Sie ein Listenfeld-Steuerelement zur Zeile unter der Bezeichnung hinzufügen.
Deklarieren Sie das
<ListBox />
Steuerelement unter dem<Label>
Steuerelement.Setzen Sie die
Grid.Row
-Eigenschaft auf1
.Setzen Sie die
x:Name
-Eigenschaft auflstNames
.Sobald ein Name für ein Steuerelement festgelegt wurde, kann in der CodeBehind-Datei darauf verwiesen werden. Der Name wird dem Steuerelement mit dem Attribut
x:Name
zugewiesen.
So sollte der XAML-Code aussehen:
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label>Names</Label>
<ListBox Grid.Row="1" x:Name="lstNames" />
</Grid>
Hinzufügen der restlichen Steuerelemente
Die letzten beiden Steuerelemente, die hinzugefügt werden, sind ein Textfeld und eine Schaltfläche, mit der der Benutzer einen Namen eingibt, der dem Listenfeld hinzugefügt werden soll. Anstatt jedoch zu versuchen, mehr Zeilen und Spalten im Raster zu erstellen, um diese Steuerelemente anzuordnen, fügen wir diese Steuerelemente in das <StackPanel>
Layoutsteuerelement ein.
Das StackPanel-Element unterscheidet sich vom Raster hinsichtlich der Platzierung der Steuerelemente. Während Sie das Raster anweisen, wo die Steuerelemente mit den Grid.Row
und Grid.Column
den angefügten Eigenschaften sein sollen, funktioniert das Stapelpanel automatisch, um jedes seiner untergeordneten Steuerelemente sequenziell zu gestalten. Es "stapelt" jedes Steuerelement nach dem anderen.
Deklarieren Sie das
<StackPanel>
Steuerelement unter dem<ListBox>
Steuerelement.Setzen Sie die
Grid.Row
-Eigenschaft auf1
.Setzen Sie die
Grid.Column
-Eigenschaft auf1
.Legen Sie den
Margin
auf5,0,0,0
fest.<Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Label>Names</Label> <ListBox Grid.Row="1" x:Name="lstNames" /> <StackPanel Grid.Row="1" Grid.Column="1" Margin="5,0,0,0"> </StackPanel>
Das Attribut
Margin
wurde zuvor im Raster verwendet. Sie haben jedoch nur den Wert10
angegeben. Dieser Rand hat einen Wert von5,0,0,0
, der sich sehr von10
. Die Margin-Eigenschaft ist einThickness
Typ und kann beide Werte interpretieren. Ein solcher Typ definiert den Leerraum um jede Seite eines rechteckigen Rahmens: links, oben, rechts, unten. Wenn nur ein Wert für den Rand vorhanden ist, wird dieser für alle vier Seiten verwendet.Erstellen Sie innerhalb des
<StackPanel>
Steuerelements ein<TextBox />
Steuerelement.- Setzen Sie die
x:Name
-Eigenschaft auftxtName
.
- Setzen Sie die
Schließlich erstellen Sie nach dem
<TextBox>
, noch im Inneren des<StackPanel>
Steuerelements, ein<Button>
Steuerelement.- Setzen Sie die
x:Name
-Eigenschaft aufbtnAdd
. - Legen Sie den
Margin
auf0,5,0,0
fest. - Legen Sie den Inhalt auf
Add Name
.
- Setzen Sie die
So sollte der XAML-Code aussehen:
<StackPanel Grid.Row="1" Grid.Column="1" Margin="5,0,0,0">
<TextBox x:Name="txtName" />
<Button x:Name="btnAdd" Margin="0,5,0,0">Add Name</Button>
</StackPanel>
Das Layout für das Fenster ist damit fertig. Ihre App enthält jedoch noch keine Logik und ist damit nicht funktional. Als Nächstes müssen Sie die Steuerelementereignisse mit dem Code verbinden, damit die App eine Funktion erfüllt.
Hinzufügen von Code für ein Click-Ereignis
Das erstellte <Button>
-Element enthält das Ereignis Click
, das immer dann ausgelöst wird, wenn der Benutzer eine Schaltfläche auswählt. Sie können dieses Ereignis abonnieren und Code hinzufügen, um dem Listenfeld einen Namen hinzuzufügen. XAML-Attribute werden verwendet, um Ereignisse wie zum Festlegen von Eigenschaften zu abonnieren.
Suchen Sie das
<Button>
Steuerelement.Legen Sie das
Click
-Attribut aufButtonAddName_Click
fest.<StackPanel Grid.Row="1" Grid.Column="1" Margin="5,0,0,0"> <TextBox x:Name="txtName" /> <Button x:Name="btnAdd" Margin="0,5,0,0" Click="ButtonAddName_Click">Add Name</Button> </StackPanel>
Generieren Sie den Ereignishandlercode. Klicken Sie mit der rechten Maustaste auf
ButtonAddName_Click
, und wählen Sie Gehe zu Definition aus.Diese Aktion generiert eine Methode im CodeBehind, die dem bereitgestellten Handlernamen entspricht.
private void ButtonAddName_Click(object sender, RoutedEventArgs e) { }
Private Sub ButtonAddName_Click(sender As Object, e As RoutedEventArgs) End Sub
Fügen Sie als Nächstes den folgenden Code hinzu, um diese drei Schritte auszuführen:
- Sicherstellen, dass das Textfeld einen Namen enthält
- Überprüfen, ob der in das Textfeld eingegebene Name bereits vorhanden ist
- Hinzufügen des Namens zum Listenfeld
private void ButtonAddName_Click(object sender, RoutedEventArgs e) { if (!string.IsNullOrWhiteSpace(txtName.Text) && !lstNames.Items.Contains(txtName.Text)) { lstNames.Items.Add(txtName.Text); txtName.Clear(); } }
Private Sub ButtonAddName_Click(sender As Object, e As RoutedEventArgs) If Not String.IsNullOrWhiteSpace(txtName.Text) And Not lstNames.Items.Contains(txtName.Text) Then lstNames.Items.Add(txtName.Text) txtName.Clear() End If End Sub
Ausführen der App
Nachdem das Ereignis behandelt wird, führen Sie die App aus. Das Fenster wird angezeigt, und Sie können einen Namen in das Textfeld eingeben und diesen durch Auswählen der Schaltfläche hinzufügen.
Zugehöriger Inhalt
.NET Desktop feedback