Freigeben über


WPF-Plattformsetup

Vorschaubezeichnung

Xamarin.Forms enthält Vorschauunterstützung für Windows Presentation Foundation (WPF), in .NET Framework und .NET Core 3. In diesem Artikel wird veranschaulicht, wie Sie einer Xamarin.Forms Lösung ein WPF-Projekt hinzufügen, das auf .NET Framework ausgerichtet ist.

Wichtig

Xamarin.Forms Unterstützung für WPF wird von der Community bereitgestellt. Weitere Informationen finden Sie unter Xamarin.Forms Plattformsupport.

Bevor Sie beginnen, erstellen Sie eine neue Xamarin.Forms Lösung in Visual Studio 2019, oder verwenden Sie eine vorhandene Xamarin.Forms Lösung.

Hinzufügen einer WPF-Anwendung

Befolgen Sie die folgenden Anweisungen, um eine WPF-Anwendung hinzuzufügen, die auf den Windows 7-, 8- und 10-Desktops ausgeführt wird:

  1. Klicken Sie in Visual Studio 2019 mit der rechten Maustaste auf den Projektmappennamen in der Projektmappen-Explorer, 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 "Windows" in der Dropdownliste "Plattformen" aus, und wählen Sie "Desktop" in der Dropdownliste "Projekttyp" aus. Wählen Sie in der Liste der Projekttypen WPF-App (.NET Framework) aus:

    Screenshot des Dialogfelds

    Drücken Sie die Schaltfläche "Weiter ".

    Hinweis

    Xamarin.Forms 4.7 enthält Unterstützung für WPF-Apps, die auf .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 BoxViewClock-Ordner aus, und drücken Sie "Ordner auswählen", um das WPF-Projekt im selben Verzeichnis wie die anderen Projekte in der Projektmappe zu platzieren:

    Screenshot des Dialogfelds

    Drücken Sie die Schaltfläche "Erstellen ", um das Projekt zu erstellen.

  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das neue BoxViewClock.WPF-Projekt, 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 Namen der Lösung, und wählen Sie "NuGet-Pakete für Lösung 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. Aktivieren Sie im Dialogfeld "Verweis-Manager" links "Projekte", 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 die 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 MainWindow.xaml.cs Datei des WPF-Projekts. Fügen Sie zwei neue using Direktiven hinzu:

    using Xamarin.Forms;
    using Xamarin.Forms.Platform.WPF;
    

    Ändern Sie die Basisklasse von MainWindow von Window zu FormsApplicationPage. 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 MainWindows.xaml.cs Datei 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

Anhand von Code oder XAML können Sie ermitteln, auf welcher Plattform Ihre Xamarin.Forms Anwendung ausgeführt wird. Auf diese Weise können Sie die Programmmerkmale ändern, wenn sie auf WPF ausgeführt wird. Vergleichen Sie im Code den Wert mit Device.RuntimePlatform der Device.WPF Konstante (die der Zeichenfolge "WPF") entspricht. Wenn eine Übereinstimmung vorliegt, wird die Anwendung auf 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 Anfangsgröße des Fensters in der Datei WPF MainWindow.xaml anpassen:

Title="BoxViewClock" Height="450" Width="800"

Probleme

Dies ist eine Vorschau, daher sollten Sie davon ausgehen, dass nicht alles produktionsbereit ist. Nicht alle NuGet-Pakete sind für Xamarin.Forms WPF bereit, und einige Features funktionieren möglicherweise nicht vollständig.

Xamarin.Forms 3.0 WPF-Supportvideo