Einrichten der WPF-Plattform
Xamarin.Formsverfügt über Vorschauunterstützung für die Windows Presentation Foundation (WPF), .NET Framework und .NET Core 3. In diesem Artikel wird veranschaulicht, wie Sie einer Projektmappe ein WPF-Projekt hinzufügen, das auf .NET Framework Xamarin.Forms abzielt.
Wichtig
Xamarin.Forms Unterstützung für WPF wird von der Community bereitgestellt. Weitere Informationen finden Sie unter Xamarin.Forms Plattformunterstützung.
Erstellen Sie zunächst eine neue Xamarin.Forms Projektmappe in Visual Studio 2019, oder verwenden Sie eine vorhandene Xamarin.Forms Projektmappe, z. B. BoxViewClock. Sie können einer Xamarin.Forms Projektmappe in Windows nur WPF-Apps hinzufügen.
Hinzufügen einer WPF-Anwendung
Befolgen Sie die folgenden Anweisungen, um eine WPF-Anwendung hinzuzufügen, die auf windows 7-, 8- und 10-Desktops ausgeführt wird:
Klicken Sie in Visual Studio 2019 im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappennamen, und wählen Sie Neues Projekt hinzufügen>... aus.
Wählen Sie im Fenster Neues Projekt hinzufügen in der Dropdownliste Sprachen die Option C# aus, wählen Sie in der Dropdownliste Plattformen die Option Windows und in der Dropdownliste Projekttyp die Option Desktop aus. Wählen Sie in der Liste der Projekttypen WPF-App (.NET Framework) aus:
"
Klicken Sie auf die Schaltfläche Weiter .
Hinweis
Xamarin.Forms 4.7 enthält Unterstützung für WPF-Apps, die unter .NET Core 3 ausgeführt werden.
Geben Sie im Fenster Neues Projekt konfigurieren einen Namen für das Projekt mit einer WPF-Erweiterung ein, z. B. BoxViewClock.WPF. Klicken Sie auf die Schaltfläche Durchsuchen , wählen Sie den Ordner BoxViewClock aus, und drücken Sie Ordner auswählen , um das WPF-Projekt im gleichen Verzeichnis wie die anderen Projekte in der Projektmappe zu speichern:
Klicken Sie auf die Schaltfläche Erstellen , um das Projekt zu erstellen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das neue Projekt BoxViewClock.WPF, und wählen Sie NuGet-Pakete verwalten... aus. Wählen Sie die Registerkarte Durchsuchen aus, und suchen Sie nach Xamarin.Forms. Platform.WPF:
.
Wählen Sie das Paket aus, und klicken Sie auf die Schaltfläche Installieren .
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappennamen, und wählen Sie NuGet-Pakete für Projektmappe verwalten... aus. Wählen Sie die Registerkarte Updates und dann das Xamarin.Forms Paket aus. Wählen Sie alle Projekte aus, und aktualisieren Sie sie auf dieselbe Xamarin.Forms Version:
Klicken Sie im WPF-Projekt mit der rechten Maustaste auf Verweise , und wählen Sie Verweis hinzufügen... aus. Wählen Sie im Dialogfeld Verweis-Manager links Projekte aus, und aktivieren Sie das Kontrollkästchen neben dem BoxViewClock-Projekt :
Klicken Sie auf die Schaltfläche OK .
Bearbeiten Sie die Datei MainWindow.xaml des WPF-Projekts. Fügen Sie im
Window
-Tag eine XML-Namespacedeklaration für hinzu Xamarin.Forms. Platform.WPF-Assembly und Namespace:xmlns:wpf="clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF"
Ändern Sie nun das
Window
-Tag inwpf:FormsApplicationPage
. Ändern Sie dieTitle
Einstellung in den Namen Ihrer Anwendung, z. B. BoxViewClock. Die fertige XAML-Datei sollte wie folgt aussehen:<wpf:FormsApplicationPage x:Class="BoxViewClock.WPF.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:BoxViewClock.WPF" xmlns:wpf="clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF" mc:Ignorable="d" Title="BoxViewClock" Height="450" Width="800"> <Grid> </Grid> </wpf:FormsApplicationPage>
Bearbeiten Sie die Datei MainWindow.xaml.cs des WPF-Projekts. Fügen Sie zwei neue
using
Anweisungen hinzu:using Xamarin.Forms; using Xamarin.Forms.Platform.WPF;
Ändern Sie die Basisklasse von
MainWindow
von inWindow
FormsApplicationPage
. Fügen Sie nach demInitializeComponent
Aufruf die folgenden beiden Anweisungen hinzu:Forms.Init(); LoadApplication(new BoxViewClock.App());
Mit Ausnahme von Kommentaren und nicht verwendeten
using
Direktiven sollte die vollständige Datei MainWindows.xaml.cs wie folgt aussehen:using Xamarin.Forms; using Xamarin.Forms.Platform.WPF; namespace BoxViewClock.WPF { public partial class MainWindow : FormsApplicationPage { public MainWindow() { InitializeComponent(); Forms.Init(); LoadApplication(new BoxViewClock.App()); } } }
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das WPF-Projekt, und wählen Sie Als Startprojekt festlegen aus. Drücken Sie F5, um das Programm mit dem Visual Studio-Debugger auf dem Windows-Desktop auszuführen:
Plattformspezifische Daten
Sie können ermitteln, auf welcher Plattform Ihre Xamarin.Forms Anwendung ausgeführt wird, entweder über Code oder XAML. Auf diese Weise können Sie die Programmmerkmale ändern, wenn es in WPF ausgeführt wird. Vergleichen Sie im Code den Wert von Device.RuntimePlatform
mit der Device.WPF
-Konstante (die der Zeichenfolge "WPF") entspricht. Wenn eine Übereinstimmung vorliegt, wird die Anwendung unter WPF ausgeführt.
In XAML können Sie das OnPlatform
Tag verwenden, um einen für die Plattform spezifischen Eigenschaftswert auszuwählen:
<Button.TextColor>
<OnPlatform x:TypeArguments="Color">
<On Platform="iOS" Value="White" />
<On Platform="macOS" Value="White" />
<On Platform="Android" Value="Black" />
<On Platform="WPF" Value="Blue" />
</OnPlatform>
</Button.TextColor>
Fenstergröße
Sie können die anfängliche Größe des Fensters in der Datei "WPF MainWindow.xaml" anpassen:
Title="BoxViewClock" Height="450" Width="800"
Probleme
Dies ist eine Vorschau, sodass Sie erwarten sollten, dass nicht alles produktionsbereit ist. Nicht alle NuGet-Pakete für Xamarin.Forms sind für WPF bereit, und einige Features funktionieren möglicherweise nicht vollständig.
Zugehörige Videos
Xamarin.Forms 3.0 WPF-Supportvideo