Configurazione della piattaforma WPF

Preview label

Xamarin.Forms include il supporto in anteprima per Windows Presentation Foundation (WPF), in .NET Framework e in .NET Core 3. Questo articolo illustra come aggiungere un progetto WPF destinato a .NET Framework a una Xamarin.Forms soluzione.

Importante

Xamarin.Forms il supporto per WPF viene fornito dalla community. Per altre informazioni, vedere Xamarin.Forms Supporto della piattaforma.

Prima di iniziare, creare una nuova Xamarin.Forms soluzione in Visual Studio 2019 o usare una soluzione esistente Xamarin.Forms , ad esempio BoxViewClock. È possibile aggiungere app WPF solo a una Xamarin.Forms soluzione in Windows.

Aggiungere un'applicazione WPF

Seguire queste istruzioni per aggiungere un'applicazione WPF che verrà eseguita nei desktop di Windows 7, 8 e 10:

  1. In Visual Studio 2019 fare clic con il pulsante destro del mouse sul nome della soluzione nel Esplora soluzioni e scegliere Aggiungi > nuovo progetto....

  2. Nella finestra Aggiungi un nuovo progetto selezionare C# nell'elenco a discesa Linguaggi, selezionare Windows nell'elenco a discesa Piattaforme e selezionare Desktop nell'elenco a discesa Tipo di progetto. Nell'elenco dei tipi di progetto scegliere App WPF (.NET Framework):In the list of project types, choose WPF App (.NET Framework):

    Screenshot shows the Add a new project dialog box with W P F App selected.

    Premere il pulsante Avanti .

    Nota

    Xamarin.Forms 4.7 include il supporto per le app WPF eseguite in .NET Core 3.

  3. Nella finestra Configura il nuovo progetto digitare un nome per il progetto con un'estensione WPF, ad esempio BoxViewClock.WPF. Fare clic sul pulsante Sfoglia , selezionare la cartella BoxViewClock e premere Seleziona cartella per inserire il progetto WPF nella stessa directory degli altri progetti nella soluzione:

    Screenshot shows the Configure you new project dialog box with values for Project name, Location, and Framework.

    Premere il pulsante Crea per creare il progetto.

  4. Nella Esplora soluzioni fare clic con il pulsante destro del mouse sul nuovo progetto BoxViewClock.WPF e scegliere Gestisci pacchetti NuGet... . Selezionare la scheda Sfoglia e cercare Xamarin.Forms. Platform.WPF:

    Select the NuGet package

    Selezionare il pacchetto e fare clic sul pulsante Installa .

  5. Fare clic con il pulsante destro del mouse sul nome della soluzione nella Esplora soluzioni e selezionare Gestisci pacchetti NuGet per soluzione... Selezionare la scheda Aggiornamenti e quindi selezionare il Xamarin.Forms pacchetto. Selezionare tutti i progetti e aggiornarli alla stessa Xamarin.Forms versione:

    Update the NuGet package

  6. Nel progetto WPF fare clic con il pulsante destro del mouse su Riferimenti e scegliere Aggiungi riferimento.Nella finestra di dialogo Gestione riferimenti selezionare Progetti a sinistra e selezionare la casella di controllo adiacente al progetto BoxViewClock:

    Reference the shared project

    Premere il pulsante OK .

  7. Modificare il file MainWindow.xaml del progetto WPF. Window Nel tag aggiungere una dichiarazione dello spazio dei nomi XML per .Xamarin.Forms Assembly e spazio dei nomi Platform.WPF:

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

    Modificare ora il Window tag in wpf:FormsApplicationPage. Modificare l'impostazione Title impostando il nome dell'applicazione, ad esempio BoxViewClock. Il file XAML completato sarà simile al seguente:

    <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. Modificare il file MainWindow.xaml.cs del progetto WPF. Aggiungere due nuove using direttive:

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

    Modificare la classe base di MainWindow da Window a FormsApplicationPage. Dopo la InitializeComponent chiamata, aggiungere le due istruzioni seguenti:

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

    Ad eccezione dei commenti e delle direttive inutilizzateusing, il file di MainWindows.xaml.cs completo dovrebbe essere simile al seguente:

    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. Fare clic con il pulsante destro del mouse sul progetto WPF nel Esplora soluzioni e scegliere Imposta come progetto di avvio. Premere F5 per eseguire il programma con il debugger di Visual Studio sul desktop di Windows:

    WPF BoxView Clock

Specifiche della piattaforma

Puoi determinare la piattaforma Xamarin.Forms su cui è in esecuzione l'applicazione dal codice o da XAML. In questo modo è possibile modificare le caratteristiche del programma quando è in esecuzione in WPF. Nel codice confrontare il valore di Device.RuntimePlatform con la costante (che equivale alla Device.WPF stringa "WPF"). Se esiste una corrispondenza, l'applicazione è in esecuzione in WPF.

In XAML puoi usare il OnPlatform tag per selezionare un valore della proprietà specifico della piattaforma:

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

Dimensioni finestra

È possibile modificare le dimensioni iniziali della finestra nel file WPF MainWindow.xaml :

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

Problemi

Si tratta di un'anteprima, quindi è consigliabile aspettarsi che non tutto sia pronto per la produzione. Non tutti i pacchetti NuGet per Xamarin.Forms sono pronti per WPF e alcune funzionalità potrebbero non funzionare completamente.

Xamarin.Forms Video di supporto wpf 3.0