Einrichten der WPF-PlattformWPF platform setup

Vorschau

Xamarin.Formsverfügt über eine Vorschau Unterstützung für die Windows Presentation Foundation (WPF) auf .NET Framework und .net Core 3. has preview support for the Windows Presentation Foundation (WPF), on .NET Framework and on .NET Core 3. In diesem Artikel wird veranschaulicht, wie einer Projekt Mappe ein WPF-Projekt hinzugefügt wird, das .NET Framework als Ziel hat Xamarin.Forms .This article demonstrates how to add a WPF project that targets .NET Framework, to a Xamarin.Forms solution.

Wichtig

Xamarin.Formsdie Unterstützung für WPF wird von der Community bereitgestellt. support for WPF is provided by the community. Weitere Informationen finden Sie Xamarin.Forms unter Platt Form Unterstützung.For more information, see Xamarin.Forms Platform Support.

Bevor Sie beginnen, erstellen Sie eine neue Projekt Mappe Xamarin.Forms in Visual Studio 2019, oder verwenden Sie eine vorhandene Projekt Mappe Xamarin.Forms , z. b. boxviewclock.Before you start, create a new Xamarin.Forms solution in Visual Studio 2019, or use an existing Xamarin.Forms solution, for example, BoxViewClock. Sie können WPF-Apps nur in Windows zu einer Projekt Mappe hinzufügen Xamarin.Forms .You can only add WPF apps to a Xamarin.Forms solution in Windows.

Hinzufügen einer WPF-AnwendungAdd a WPF application

Befolgen Sie diese Anweisungen, um eine WPF-Anwendung hinzuzufügen, die auf den Desktops Windows 7, 8 und 10 ausgeführt werden kann:Follow these instructions to add a WPF application that will run on the Windows 7, 8, and 10 desktops:

  1. Klicken Sie in Visual Studio 2019 mit der rechten Maustaste auf den Projektmappennamen im Projektmappen-Explorer , und wählen Sie > neues Projekt hinzufügen... aus.In Visual Studio 2019, right-click on the solution name in the Solution Explorer and choose Add > New Project....

  2. Wählen Sie im Fenster Neues Projekt hinzufügen in der Dropdown-Dropdown-Dropdown- Datei die Option c# aus, wählen Sie in der Dropdown -Dropdown Fläche Plattformen die Option Windows aus, und wählen SieIn the Add a new project window, select C# in the Languages drop down, select Windows in the Platforms drop down, and select Desktop in the Project type drop down. Wählen Sie in der Liste der Projekttypen WPF-App (.NET Framework) aus:In the list of project types, choose WPF App (.NET Framework):

    Neues WPF-Projekt hinzufügenAdd a new WPF project

    Klicken Sie auf die Schaltfläche weiter .Press the Next button.

    Hinweis

    Xamarin.Forms4,7 bietet Unterstützung für WPF-apps, die unter .net Core 3 ausgeführt werden. 4.7 includes support for WPF apps that run on .NET Core 3.

  3. Geben Sie im Fenster Neues Projekt konfigurieren einen Namen für das Projekt mit einer WPF -Erweiterung ein, z. b. boxviewclock. WPF.In the Configure your new project window, type a name for the project with a WPF extension, for example, BoxViewClock.WPF. Klicken Sie auf die Schaltfläche Durchsuchen , wählen Sie den Ordner boxviewclock aus, und klicken Sie auf Ordner auswählen , um das WPF-Projekt in demselben Verzeichnis wie die anderen Projekte in der Projekt Mappe zu platzieren:Click the Browse button, select the BoxViewClock folder, and press Select Folder to put the WPF project in the same directory as the other projects in the solution:

    Neues WPF-Projekt hinzufügenAdd a new WPF project

    Klicken Sie auf die Schaltfläche Erstellen , um das Projekt zu erstellen.Press the Create button to create the project.

  4. Klicken Sie im Projektmappen-Explorermit 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**:In the Solution Explorer, right click the new BoxViewClock.WPF project and select Manage NuGet Packages.... Select the Browse tab, and search for Xamarin.Forms.Platform.WPF:

    Nuget-Paket auswählenSelect the NuGet package

    Wählen Sie das Paket, und klicken Sie auf die Schaltfläche Installieren .Select the package and click the Install button.

  5. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappennamen, und wählen Sie nuget-Pakete für Projekt Mappe verwalten aus. Wählen Sie die Registerkarte Updates , und wählen Sie dann das Xamarin.Forms Paket aus.Right click the solution name in the Solution Explorer and select Manage NuGet Packages for Solution.... Select the Updates tab and then select the Xamarin.Forms package. Wählen Sie alle Projekte aus, und aktualisieren Sie Sie auf die gleiche Xamarin.Forms Version:Select all the projects and update them to the same Xamarin.Forms version:

    Aktualisieren Sie das nuget-Paket.Update the NuGet package

  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 die Option Projekte auf der linken Seite aus, und aktivieren Sie das Kontrollkästchen neben dem boxviewclock -Projekt:In the WPF project, right-click on References and select Add Reference.... In the Reference Manager dialog, select Projects at the left, and check the checkbox adjacent to the BoxViewClock project:

    Verweisen auf das freigegebene ProjektReference the shared project

    Klicken Sie auf die Schaltfläche OK .Press the OK button.

  7. Bearbeiten Sie die Datei " MainWindow. XAML " des WPF-Projekts.Edit the MainWindow.xaml file of the WPF project. WindowFügen Sie im-Tag eine XML-Namespace Deklaration für das hinzu ** Xamarin.Forms . Platform. WPF** -Assembly und-Namespace:In the Window tag, add an XML namespace declaration for the Xamarin.Forms.Platform.WPF assembly and namespace:

    xmlns:wpf="clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF"
    

    Ändern Sie nun das Window Tag in wpf:FormsApplicationPage .Now change the Window tag to wpf:FormsApplicationPage. Ändern Title Sie die Einstellung in den Namen der Anwendung, z. b. boxviewclock.Change the Title setting to the name of your application, for example, BoxViewClock. Die abgeschlossene XAML-Datei sollte wie folgt aussehen:The completed XAML file should look like this:

    <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.Edit the MainWindow.xaml.cs file of the WPF project. Fügen Sie zwei neue using Anweisungen hinzu:Add two new using directives:

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

    Ändern Sie die Basisklasse von MainWindow von Window in FormsApplicationPage .Change the base class of MainWindow from Window to FormsApplicationPage. Fügen Sie nach dem-Befehl InitializeComponent die folgenden beiden-Anweisungen hinzu:Following the InitializeComponent call, add the following two statements:

    Forms.Init();
    LoadApplication(new BoxViewClock.App());
    

    Mit Ausnahme von Kommentaren und nicht verwendeten using Direktiven sollte die gesamte MainWindows.XAML.cs -Datei wie folgt aussehen:Except for comments and unused using directives, the complete MainWindows.xaml.cs file should look like this:

    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 festlegenaus.Right-click the WPF project in the Solution Explorer and select Set as Startup Project. Drücken Sie F5, um das Programm mit dem Visual Studio-Debugger auf dem Windows-Desktop auszuführen:Press F5 to run the program with the Visual Studio debugger on the Windows desktop:

    WPF-boxview-UhrWPF BoxView Clock

Platt Form BesonderheitenPlatform specifics

Sie können mithilfe Xamarin.Forms von Code oder XAML ermitteln, auf welcher Plattform die Anwendung ausgeführt wird.You can determine what platform your Xamarin.Forms application is running on from either code or XAML. Dies ermöglicht es Ihnen, die Programm Merkmale zu ändern, wenn Sie auf WPF ausgeführt werden.This allows you to change program characteristics when it's running on WPF. Vergleichen Sie im Code den Wert von Device.RuntimePlatform mit der- Device.WPF Konstante (die der Zeichenfolge "WPF" entspricht).In code, compare the value of Device.RuntimePlatform with the Device.WPF constant (which equals the string "WPF"). Wenn eine Entsprechung vorliegt, wird die Anwendung auf WPF ausgeführt.If there's a match, the application is running on WPF.

In XAML können Sie das-Tag verwenden, OnPlatform um einen für die Plattform spezifischen Eigenschafts Wert auszuwählen:In XAML, you can use the OnPlatform tag to select a property value specific to the platform:

<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ößeWindow size

Sie können die anfängliche Größe des Fensters in der WPF-Datei MainWindow. XAML anpassen:You can adjust the initial size of the window in the WPF MainWindow.xaml file:

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

ProblemeIssues

Dies ist eine Vorschauversion, daher sollten Sie davon ausgehen, dass nicht alles in der Produktion bereit ist.This is a preview, so you should expect that not everything is production ready. Nicht alle nuget-Pakete für Xamarin.Forms sind für WPF bereit, und einige Features funktionieren möglicherweise nicht vollständig.Not all NuGet packages for Xamarin.Forms are ready for WPF, and some features might not be fully working.

Xamarin.Forms3,0 WPF-Unterstützungs VideoXamarin.Forms 3.0 WPF support video