Configurazione della piattaforma WPF
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 .
Aggiungere un'applicazione WPF
Seguire queste istruzioni per aggiungere un'applicazione WPF che verrà eseguita nei desktop di Windows 7, 8 e 10:
In Visual Studio 2019 fare clic con il pulsante destro del mouse sul nome della soluzione nel Esplora soluzioni e scegliere Aggiungi > nuovo progetto....
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):
Premere il pulsante Avanti .
Nota
Xamarin.Forms 4.7 include il supporto per le app WPF eseguite in .NET Core 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:
Premere il pulsante Crea per creare il progetto.
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:
Selezionare il pacchetto e fare clic sul pulsante Installa .
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:
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:
Premere il pulsante OK .
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 inwpf:FormsApplicationPage
. Modificare l'impostazioneTitle
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>
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
daWindow
aFormsApplicationPage
. Dopo laInitializeComponent
chiamata, aggiungere le due istruzioni seguenti:Forms.Init(); LoadApplication(new BoxViewClock.App());
Ad eccezione dei commenti e delle direttive inutilizzate
using
, 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()); } } }
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:
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.
Video correlato
Xamarin.Forms Video di supporto wpf 3.0