Einrichten der WPF-Plattform

Vorschaubezeichnung

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:

  1. 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.

  2. 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:

    Screenshot: Dialogfeld "

    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.

  3. 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:

    Screenshot: Dialogfeld

    Klicken Sie auf die Schaltfläche Erstellen , um das Projekt zu erstellen.

  4. 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:

    Auswählen des NuGet-Pakets.

    Wählen Sie das Paket aus, und klicken Sie auf die Schaltfläche Installieren .

  5. 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:

    Aktualisieren des NuGet-Pakets

  6. 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 :

    Verweisen auf das freigegebene Projekt

    Klicken Sie auf die Schaltfläche OK .

  7. 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 in wpf:FormsApplicationPage. Ändern Sie die Title 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>
    
  8. 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 in WindowFormsApplicationPage. Fügen Sie nach dem InitializeComponent 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());
            }
        }
    }
    
  9. 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:

    WPF BoxView Clock

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.

Xamarin.Forms 3.0 WPF-Supportvideo