WPF 平台設定

Preview label

Xamarin.Forms 在 .NET Framework 和 .NET Core 3 上,具有 Windows Presentation Foundation (WPF) 的預覽支援。 本文示範如何將以 .NET Framework 為目標的 WPF 專案新增至 Xamarin.Forms 解決方案。

重要

Xamarin.Forms 社群會提供 WPF 的支援。 如需詳細資訊,請參閱 Xamarin.Forms 平台支援

開始之前,請先在Visual Studio 2019中建立新的 Xamarin.Forms 方案,或使用現有的 Xamarin.Forms 方案, 例如BoxViewClock。 您只能在 Windows 中將 WPF 應用程式新增至 Xamarin.Forms 解決方案。

新增 WPF 應用程式

請依照下列指示新增將在 Windows 7、8 和 10 桌面上執行的 WPF 應用程式:

  1. 在 Visual Studio 2019 中,以滑鼠右鍵按兩下 方案總管 中的方案名稱,然後選擇 [新增>專案...]。

  2. 在 [新增專案] 視窗中,選取 [語言] 下拉式清單中的 [C#],在 [平臺] 下拉式列表中選取 [Windows],然後在 [項目類型] 下拉式清單中選取 [桌面]。 在專案類型清單中,選擇 [WPF 應用程式] (.NET Framework)

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

    按 [ 下一步] 按鈕。

    注意

    Xamarin.Forms 4.7 包含對 .NET Core 3 上執行的 WPF 應用程式支援。

  3. 在 [ 設定新專案 ] 視窗中,輸入具有 WPF 延伸模組的專案名稱,例如 BoxViewClock.WPF。 按下 [ 瀏覽 ] 按鈕,選取 BoxViewClock 資料夾,然後按 [選取資料夾 ] 將 WPF 專案放在與方案中的其他專案相同的目錄中:

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

    按 [ 建立] 按鈕以建立專案。

  4. 方案總管 中,以滑鼠右鍵按兩下新的BoxViewClock.WPF專案,然後選取 [管理 NuGet 套件...]。選取 [瀏覽] 索引標籤,然後搜尋 Xamarin.Forms。Platform.WPF

    Select the NuGet package

    選取套件,然後按兩下 [ 安裝] 按鈕。

  5. 以滑鼠右鍵按兩下 方案總管中的方案名稱,然後選取 [管理方案的 NuGet 套件...]。選取 [更新] 索引標籤,然後選取Xamarin.Forms套件。 選取所有專案,並將其更新為相同的 Xamarin.Forms 版本:

    Update the NuGet package

  6. 在 WPF 專案中,以滑鼠右鍵按兩下 [參考],然後選取 [新增參考...]。在 [參考管理員] 對話框中,選取左側的 [專案],然後核取 BoxViewClock 專案相鄰的複選框:

    Reference the shared project

    按下 [ 確定] 按鈕。

  7. 編輯 WPF 專案的 MainWindow.xaml 檔案。 在標記中 Window ,新增的 Xamarin.FormsXML 命名空間宣告。Platform.WPF 元件和命名空間:

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

    現在,將 Window 標記變更為 wpf:FormsApplicationPage。 將 Title 設定變更為應用程式的名稱,例如 BoxViewClock。 已完成的 XAML 檔案看起來應該像這樣:

    <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. 編輯 WPF 專案的MainWindow.xaml.cs檔案。 新增兩個新 using 指示詞:

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

    將的 MainWindow 基類從 Window 變更為 FormsApplicationPage。 在呼叫之後 InitializeComponent ,新增下列兩個 語句:

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

    除了批注和未使用的 using 指示詞之外,完整的 MainWindows.xaml.cs 檔案看起來應該像這樣:

    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. 以滑鼠右鍵按兩下 方案總管中的 WPF 專案,然後選取 [設定為啟始專案]。 按 F5 以在 Windows 桌面上使用 Visual Studio 調試程序執行程式:

    WPF BoxView Clock

平台細節

您可以從程式代碼或 XAML 判斷應用程式執行的平臺 Xamarin.Forms 。 這可讓您在 WPF 上執行時變更程式特性。 在程式代碼中,將的值 Device.RuntimePlatformDevice.WPF 常數進行比較(等於字串 “WPF” )。 如果有相符專案,應用程式就會在 WPF 上執行。

在 XAML 中 OnPlatform ,您可以使用標記來選取平臺特定的屬性值:

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

視窗大小

您可以在 WPF MainWindow.xaml 檔案中調整視窗的初始大小:

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

問題

這是預覽版,因此您應該預期並非所有專案都已就緒。 並非所有的 Xamarin.Forms NuGet 套件都已準備好用於 WPF,某些功能可能無法完全運作。

Xamarin.Forms 3.0 WPF 支援影片