GTK# 플랫폼 설정

Xamarin.Forms 이제 GTK# 앱에 대한 미리 보기 지원이 있습니다. GTK#은 GTK+ 도구 키트와 다양한 GNOME 라이브러리를 연결하는 그래픽 사용자 인터페이스 도구 키트로, Mono 및 .NET을 사용하여 완전히 네이티브 GNOME 그래픽 앱을 개발할 수 있습니다. 이 문서에서는 솔루션에 GTK# 프로젝트를 Xamarin.Forms 추가하는 방법을 보여 줍니다.

Important

Xamarin.Forms GTK#에 대한 지원은 커뮤니티에서 제공합니다. 자세한 내용은 플랫폼 지원을 참조 Xamarin.Forms 하세요.

시작하기 전에 새 Xamarin.Forms 솔루션을 만들거나 기존 솔루션(예: GameOfLife)을 Xamarin.Forms 사용합니다.

참고 항목

이 문서에서는 VS2017 및 Mac용 Visual Studio 솔루션에 GTK# 앱을 Xamarin.Forms 추가하는 데 중점을 두고 있지만 Linux용 MonoDevelop에서도 수행할 수 있습니다.

GTK# 앱 추가

macOS 및 Linux용 GTK#은 Mono일부로 설치됩니다. GTK# 설치 관리자를 사용하여 Windows에 .NET용 GTK#을 설치할 수 있습니다.

다음 지침에 따라 Windows 데스크톱에서 실행되는 GTK# 앱을 추가합니다.

  1. Visual Studio 2019에서 솔루션 탐색기 솔루션 이름을 마우스 오른쪽 단추로 클릭하고 새 프로젝트 추가>...를 선택합니다.

  2. 새 프로젝트 창의 왼쪽에서 Visual C#Windows 클래식 데스크톱을 선택합니다. 프로젝트 형식 목록에서 클래스 라이브러리(.NET Framework)를 선택하고 프레임워크 드롭다운이 최소 .NET Framework 4.7로 설정되어 있는지 확인합니다.

  3. GTK 확장이 있는 프로젝트의 이름(예: GameOfLife.GTK)을 입력합니다. 찾아보기 단추를 클릭하고 다른 플랫폼 프로젝트가 포함된 폴더를 선택한 다음 폴더 선택을 누릅니다. 이렇게 하면 GTK 프로젝트가 솔루션의 다른 프로젝트와 동일한 디렉터리에 배치됩니다.

    Add a new GTK project

    확인 단추를 눌러 프로젝트를 만듭니다.

  4. 솔루션 탐색기 새 GTK 프로젝트를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리를 선택합니다. 찾아보기Xamarin.Forms선택하고 3.0 이상 검색합니다.

    Select the Xamarin.Forms NuGet package

    패키지를 선택하고 설치 단추를 클릭합니다.

  5. 이제 .를 검색합니다 Xamarin.Forms. Platform.GTK 3.0 패키지 이상.

    Select the Xamarin.Forms.Platform.GTK NuGet package

    패키지를 선택하고 설치 단추를 클릭합니다.

  6. 솔루션 탐색기 솔루션 이름을 마우스 오른쪽 단추로 클릭하고 솔루션용 NuGet 패키지 관리를 선택합니다. 업데이트 탭 및 Xamarin.Forms 패키지를 선택합니다. 모든 프로젝트를 선택하고 GTK 프로젝트에서 사용하는 것과 동일한 Xamarin.Forms 버전으로 업데이트합니다.

  7. 솔루션 탐색기 GTK 프로젝트에서 참조를 마우스 오른쪽 단추로 클릭합니다. 참조 관리자 대화 상자에서 왼쪽에서 프로젝트를 선택하고 .NET Standard 또는 공유 프로젝트에 인접한 검사 상자를 검사.

    Reference the shared project

  8. 참조 관리자 대화 상자에서 찾아보기 단추를 누르고 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 파일을 선택합니다.

    Reference the GTK# libraries

    확인 단추를 눌러 참조를 추가합니다.

  9. GTK 프로젝트에서 Class1.cs 이름을 Program.cs.

  10. 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애플리케이션 창을 만들고 앱을 실행합니다.

  11. 솔루션 탐색기 GTK 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  12. 속성 창에서 애플리케이션 탭을 선택하고 출력 형식 드롭다운을 Windows 애플리케이션으로 변경합니다.

    Change the project output type

  13. 솔루션 탐색기 GTK 프로젝트를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 선택합니다. F5 키를 눌러 Windows 데스크톱에서 Visual Studio 디버거를 사용하여 프로그램을 실행합니다.

    GTK# Game of Life

다음 단계

플랫폼별

XAML 또는 코드에서 애플리케이션이 실행되는 플랫폼을 Xamarin.Forms 확인할 수 있습니다. 이렇게 하면 GTK#에서 실행 중인 프로그램 특성을 변경할 수 있습니다. 코드에서 값 Device.RuntimePlatformDevice.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");

테마

GTK#에는 다양한 테마를 사용할 수 있으며 앱에서 Xamarin.Forms 사용할 수 있습니다.

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

네이티브 양식

Native Forms를 Xamarin.FormsContentPage사용하면 GTK# 프로젝트를 비롯한 네이티브 프로젝트에서 파생된 페이지를 사용할 수 있습니다. 이 작업은 -derived 페이지의 인스턴스 ContentPage를 만들고 확장 메서드를 사용하여 CreateContainer 네이티브 GTK# 형식으로 변환하여 수행할 수 있습니다.

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

네이티브 양식에 대한 자세한 내용은 네이티브 양식을 참조 하세요.

문제

미리 보기이므로 모든 것이 프로덕션 준비가 되지 않을 것으로 예상해야 합니다. 현재 구현 상태 상태 및 현재 알려진 문제에 대해서는 보류 중 및 알려진 문제를 참조하세요.