Настройка платформы GTK#
Xamarin.Forms Теперь доступна предварительная версия поддержки приложений GTK#. GTK# — это графический набор средств пользовательского интерфейса, который связывает набор средств GTK+ и различные библиотеки GNOME, что позволяет разрабатывать полностью собственные графические приложения GNOME с помощью Mono и .NET. В этой статье показано, как добавить проект GTK# в Xamarin.Forms решение.
Внимание
Xamarin.Forms поддержка GTK# предоставляется сообществом. Дополнительные сведения см. в разделе Xamarin.Forms "Поддержка платформы".
Прежде чем начать, создайте новое Xamarin.Forms решение или используйте существующее Xamarin.Forms решение.
Примечание.
Хотя эта статья посвящена добавлению приложения GTK# в Xamarin.Forms решение в VS2017 и Visual Studio для Mac, его также можно выполнить в MonoDevelop для Linux.
Добавление приложения GTK#
GTK# для macOS и Linux устанавливается в составе Mono. GTK# для .NET можно установить в Windows с помощью установщика GTK#.
Выполните следующие инструкции, чтобы добавить приложение GTK#, которое будет работать на рабочем столе Windows:
В Visual Studio 2019 щелкните правой кнопкой мыши имя решения в Обозреватель решений и выберите "Добавить > новый проект...".
В окне "Новый проект" в левой части экрана выберите Visual C# и Классический рабочий стол Windows. В списке типов проектов выберите библиотеку классов (платформа .NET Framework)и убедитесь, что раскрывающийся список Framework установлен как минимум платформа .NET Framework 4.7.
Введите имя проекта с расширением GTK , например GameOfLife.GTK. Нажмите кнопку "Обзор ", выберите папку, содержащую другие проекты платформы, и нажмите клавишу SELECT FOLDER. При этом проект GTK будет помещен в тот же каталог, что и другие проекты в решении.
Нажмите кнопку "ОК", чтобы создать проект.
В Обозреватель решений щелкните правой кнопкой мыши новый проект GTK и выберите пункт "Управление пакетами NuGet". Выберите вкладку "Обзор " и найдите Xamarin.Forms 3.0 или более поздней версии.
Выберите пакет и нажмите кнопку "Установить ".
Теперь выполните Xamarin.Formsпоиск . Пакет Platform.GTK 3.0 или больше.
Выберите пакет и нажмите кнопку "Установить ".
В Обозреватель решений щелкните правой кнопкой мыши имя решения и выберите пункт "Управление пакетами NuGet для решения". Выберите вкладку "Обновить" и Xamarin.Forms пакет. Выберите все проекты и обновите их до той же Xamarin.Forms версии, что и проект GTK.
В Обозреватель решений щелкните правой кнопкой мыши ссылки в проекте GTK. В диалоговом окне "Диспетчер ссылок" выберите "Проекты" слева и установите флажок рядом с проектом .NET Standard или Shared:
В диалоговом окне диспетчера ссылок нажмите кнопку "Обзор" и перейдите к папке C:\Program Files (x86)\GtkSharp\2.12\lib и выберите папку atk-sharp.dll, gdk-sharp.dll, glade-sharp.dll, glib-sharp.dll, gtk-dotnet.dll, gtk-sharp.dll файлов.
Нажмите кнопку "ОК", чтобы добавить ссылки.
В проекте GTK переименуйте Class1.cs в Program.cs.
В проекте GTK измените файл Program.cs таким образом, чтобы он выглядел следующим образом:
using System; using Xamarin.Forms; using Xamarin.Forms.Platform.GTK; namespace GameOfLife.GTK { class MainClass { [STAThread] public static void Main(string[] args) { Gtk.Application.Init(); Forms.Init(); var app = new App(); var window = new FormsWindow(); window.LoadApplication(app); window.SetApplicationTitle("Game of Life"); window.Show(); Gtk.Application.Run(); } } }
Этот код инициализирует GTK# и Xamarin.Formsсоздает окно приложения и запускает приложение.
В Обозреватель решений щелкните правой кнопкой мыши проект GTK и выберите "Свойства".
В окне "Свойства" выберите вкладку "Приложение" и измените раскрывающийся список "Тип вывода" на приложение Windows.
В Обозреватель решений щелкните правой кнопкой мыши проект GTK и выберите "Задать в качестве запускаемого проекта". Нажмите клавишу F5, чтобы запустить программу с отладчиком Visual Studio на рабочем столе Windows:
Next Steps
Особенности платформы
Вы можете определить, на какой платформе Xamarin.Forms работает ваше приложение из XAML или кода. Это позволяет изменять характеристики программы при запуске в GTK#. В коде сравните значение Device.RuntimePlatform
константы Device.GTK
(которое равно строке GTK). Если есть совпадение, приложение выполняется на GTK#.
В 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="GTK" Value="Blue" />
</OnPlatform>
</Button.TextColor>
Значок приложения
Вы можете задать значок приложения при запуске:
window.SetApplicationIcon("icon.png");
Themes
Существует множество тем, доступных для GTK#, и их можно использовать из Xamarin.Forms приложения:
GtkThemes.Init ();
GtkThemes.LoadCustomTheme ("Themes/gtkrc");
Собственные формы
Native Forms позволяет Xamarin.FormsContentPage
использовать производные страницы собственными проектами, включая проекты GTK#. Это можно сделать, создав экземпляр ContentPage
производной страницы и преобразовав его в собственный тип GTK# с помощью CreateContainer
метода расширения:
var settingsView = new SettingsView().CreateContainer();
vbox.PackEnd(settingsView, true, true, 0);
Дополнительные сведения о машинных формах см. в разделе "Собственные формы".
Проблемы
Это предварительная версия, поэтому следует ожидать, что не все готово к работе. Сведения о текущем состоянии реализации см. в разделе "Состояние" и сведения о текущих известных проблемах, см. в разделе "Ожидающие" и "Известные проблемы".