Configuração da plataforma GTK#

Xamarin.Forms agora tem suporte de visualização para aplicativos GTK#. GTK# é um kit de ferramentas de interface gráfica do usuário que conecta o kit de ferramentas GTK+ e uma variedade de bibliotecas do GNOME, permitindo o desenvolvimento de aplicativos gráficos GNOME totalmente nativos usando Mono e .NET. Este artigo demonstra como adicionar um projeto GTK# a uma Xamarin.Forms solução.

Importante

Xamarin.Forms suporte para GTK# é fornecido pela comunidade. Para obter mais informações, consulte Xamarin.Forms Suporte à plataforma.

Antes de começar, crie uma nova Xamarin.Forms solução ou use uma solução existente Xamarin.Forms , por exemplo, GameOfLife.

Observação

Embora este artigo se concentre em adicionar um aplicativo GTK# a uma Xamarin.Forms solução no VS2017 e no Visual Studio para Mac, ele também pode ser executado no MonoDevelop para Linux.

Adicionando um aplicativo GTK#

O GTK# para macOS e Linux é instalado como parte do Mono. O GTK# para .NET pode ser instalado no Windows com o Instalador do GTK#.

Siga estas instruções para adicionar um aplicativo GTK# que será executado na área de trabalho do Windows:

  1. No Visual Studio 2019, clique com o botão direito do mouse no nome da solução no Gerenciador de Soluções e escolha Adicionar > Novo Projeto....

  2. Na janela Novo Projeto, à esquerda, selecione Visual C# e Windows Classic Desktop. Na lista de tipos de projeto, escolha Biblioteca de Classes (.NET Framework) e verifique se a lista suspensa Framework está definida como um mínimo de .NET Framework 4.7.

  3. Digite um nome para o projeto com uma extensão GTK , por exemplo , GameOfLife.GTK. Clique no botão Procurar , selecione a pasta que contém os outros projetos de plataforma e pressione Selecionar pasta. Isso colocará o projeto GTK no mesmo diretório que os outros projetos na solução.

    Add a new GTK project

    Pressione o botão OK para criar o projeto.

  4. No Gerenciador de Soluções, clique com o botão direito do mouse no novo projeto GTK e selecione Gerenciar Pacotes NuGet. Selecione a guia Procurar e procure Xamarin.Forms 3.0 ou superior.

    Select the Xamarin.Forms NuGet package

    Selecione o pacote e clique no botão Instalar .

  5. Agora procure o Xamarin.Formsarquivo . Pacote Platform.GTK 3.0 ou superior.

    Select the Xamarin.Forms.Platform.GTK NuGet package

    Selecione o pacote e clique no botão Instalar .

  6. No Gerenciador de Soluções, clique com o botão direito do mouse no nome da solução e selecione Gerenciar Pacotes NuGet para Solução. Selecione a guia Atualizar e o Xamarin.Forms pacote. Selecione todos os projetos e atualize-os para a mesma Xamarin.Forms versão usada pelo projeto GTK.

  7. No Gerenciador de Soluções, clique com o botão direito do mouse em Referências no projeto GTK. Na caixa de diálogo Gerenciador de Referência, selecione Projetos à esquerda e marque a caixa de seleção adjacente ao projeto .NET Standard ou Compartilhado:

    Reference the shared project

  8. Na caixa de diálogo Gerenciador de referências, pressione o botão Procurar e navegue até a pasta C:\Program Files (x86)\GtkSharp\2.12\lib e selecione os arquivos atk-sharp.dll, gdk-sharp.dll, glade-sharp.dll, glib-sharp.dll, gtk-dotnet.dll, gtk-sharp.dll arquivos.

    Reference the GTK# libraries

    Pressione o botão OK para adicionar as referências.

  9. No projeto GTK, renomeie Class1.cs para Program.cs.

  10. No projeto GTK, edite o arquivo Program.cs para que ele se pareça com o seguinte código:

    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();
            }
        }
    }
    

    Esse código inicializa o GTK# e o , cria uma janela do aplicativo e Xamarin.Formsexecuta o aplicativo.

  11. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto GTK e selecione Propriedades.

  12. Na janela Propriedades, selecione a guia Aplicativo e altere a lista suspensa Tipo de saída para Aplicativo do Windows.

    Change the project output type

  13. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto GTK e selecione Definir como Projeto de Inicialização. Pressione F5 para executar o programa com o depurador do Visual Studio na área de trabalho do Windows:

    GTK# Game of Life

Próximas etapas

Especificações da plataforma

Você pode determinar em qual plataforma seu Xamarin.Forms aplicativo está sendo executado a partir de XAML ou código. Isso permite que você altere as características do programa quando ele estiver sendo executado no GTK#. No código, compare o valor de com a Device.GTK constante (que é igual à cadeia de Device.RuntimePlatform caracteres "GTK"). Se houver uma correspondência, o aplicativo está sendo executado no GTK#.

Em XAML, você pode usar a tag para selecionar um valor de propriedade específico para a OnPlatform plataforma:

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

Ícone do Aplicativo

Você pode definir o ícone do aplicativo na inicialização:

window.SetApplicationIcon("icon.png");

Temas

Há uma grande variedade de temas disponíveis para GTK#, e eles podem ser usados a partir de um Xamarin.Forms aplicativo:

GtkThemes.Init ();
GtkThemes.LoadCustomTheme ("Themes/gtkrc");

Formulários nativos

O Native Forms permite que Xamarin.FormsContentPagepáginas derivadas sejam consumidas por projetos nativos, incluindo projetos GTK#. Isso pode ser feito criando uma instância da página derivada e ContentPageconvertendo-a para o tipo GTK# nativo usando o CreateContainer método de extensão:

var settingsView = new SettingsView().CreateContainer();
vbox.PackEnd(settingsView, true, true, 0);

Para obter mais informações sobre formulários nativos, consulte Formulários nativos.

Problemas

Esta é uma prévia, então você deve esperar que nem tudo esteja pronto para produção. Para obter o status de implementação atual, consulte Status e, para obter os problemas conhecidos atuais, consulte Problemas conhecidos pendentes.