Настройка платформы WPF
Xamarin.Formsподдерживает предварительную версию Windows Presentation Foundation (WPF), платформа .NET Framework и .NET Core 3. В этой статье показано, как добавить проект WPF, предназначенный для платформа .NET Framework, в Xamarin.Forms решение.
Внимание
Xamarin.Forms Поддержка WPF предоставляется сообществом. Дополнительные сведения см. в разделе Xamarin.Forms "Поддержка платформы".
Прежде чем начать, создайте новое Xamarin.Forms решение в Visual Studio 2019 или используйте существующее Xamarin.Forms решение.
Добавление приложения WPF
Следуйте приведенным ниже инструкциям, чтобы добавить приложение WPF, которое будет работать на настольных компьютерах Windows 7, 8 и 10:
В Visual Studio 2019 щелкните правой кнопкой мыши имя решения в Обозреватель решений и выберите "Добавить > новый проект...".
В окне "Добавление нового проекта" выберите C# в раскрывающемся списке "Языки", выберите Windows в раскрывающемся списке "Платформы" и выберите "Рабочий стол" в раскрывающемся списке "Тип проекта". В списке типов проектов выберите приложение WPF (платформа .NET Framework):
Нажмите кнопку "Далее ".
Примечание.
Xamarin.Forms 4.7 включает поддержку приложений WPF, работающих в .NET Core 3.
В окне "Настройка нового проекта" введите имя проекта с расширением WPF, например BoxViewClock.WPF. Нажмите кнопку "Обзор", выберите папку BoxViewClock и нажмите клавишу SELECT Folder, чтобы поместить проект WPF в тот же каталог, что и другие проекты в решении:
Нажмите кнопку "Создать", чтобы создать проект.
В Обозреватель решений щелкните правой кнопкой мыши новый проект BoxViewClock.WPF и выберите "Управление пакетами NuGet...". Выберите вкладку "Обзор" и выполните поискXamarin.Forms. Platform.WPF:
Выберите пакет и нажмите кнопку "Установить ".
Щелкните правой кнопкой мыши имя решения в Обозреватель решений и выберите "Управление пакетами NuGet для решения...". Выберите вкладку Обновления и выберите Xamarin.Forms пакет. Выберите все проекты и обновите их до одной Xamarin.Forms версии:
В проекте WPF щелкните правой кнопкой мыши ссылки и выберите "Добавить ссылку...". В диалоговом окне "Диспетчер ссылок" выберите "Проекты" слева и проверка поле проверка box рядом с проектом BoxViewClock:
Нажмите кнопку "ОК ".
Измените файл MainWindow.xaml проекта WPF. В теге
Window
добавьте объявление пространства имен XML для Xamarin.Formsобъекта . Сборка и пространство имен 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>
Измените файл MainWindow.xaml.cs проекта WPF. Добавьте две новые
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()); } } }
Щелкните правой кнопкой мыши проект WPF в Обозреватель решений и выберите "Задать в качестве запускаемого проекта". Нажмите клавишу F5, чтобы запустить программу с отладчиком Visual Studio на рабочем столе Windows:
Особенности платформы
Вы можете определить, на какой платформе Xamarin.Forms работает приложение из кода или XAML. Это позволяет изменять характеристики программы при работе в WPF. В коде сравнивайте значение Device.RuntimePlatform
с Device.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"
Проблемы
Это предварительная версия, поэтому следует ожидать, что не все готово к работе. Не все пакеты NuGet готовы Xamarin.Forms для WPF, и некоторые функции могут не полностью работать.
Связанное видео
Xamarin.Forms Видео поддержки WPF 3.0