GTKSharp 中的 CSS 样式

问题描述 投票:0回答:2

我正在 VS2017 中使用 GTKSharp 将 C/GTK+ GUI 应用程序转换为 C#。我已经通过 NuGet 安装了此软件包https://www.nuget.org/packages/GtkSharp/3.1.3

以下是我加载 CSS 的方法(应用程序使用 Glade 文件来定义界面):

    static void Main(string[] args)
    {
        new Program(args);
    }

    public Program(string[] args)
    {
        Application.Init();

        builder = new Builder();
        Gtk.CssProvider provider = new CssProvider();
        builder.AddFromFile("interface.glade");
        provider.LoadFromPath("style.css");
        builder.Autoconnect(this);

        Gtk.Window window = (Gtk.Window)builder.GetObject("start"); 
        Gtk.StyleContext.AddProviderForScreen(Gdk.Screen.Default, provider, 800); // couldn't find the equivalent to GTK_STYLE_PROVIDER_PRIORITY_USER so I set the priority to a random number
        window.Show();

        Application.Run();
    }

选择器名称似乎与 GTK+ 不同。例如,

    window {
     ...
    }

适用于 C/GTK+,但不适用于 C#,而

    GtkWindow {
     ...
    }

适用于 C#,但不适用于 C/GTK+。然后有一些小部件我似乎根本无法设置样式。例如,

    button {
     ...
    }

在 GTK+ 中工作但是

    GtkButton {
     ...
    }

在 C# 中不起作用。我找不到任何关于 GTK# 如何处理 CSS 样式的文档,所以我认为它与 GTK+ 相同。有什么指点吗?

c# css gtk3 gtk#
2个回答
0
投票

这是版本问题。

GTK#

版本 3.22 正确检测 GtkButton 选择器。我正在使用 GTK 3.14 的本机库。有一个“未列出的 NuGet 包”为 3.22 版本提供 win32 库。奇怪的是,该版本检测到旧的“按钮”、“窗口”...而不是“GtkButton”、“GtkWindow”...标签。


0
投票

这里是来自developer.gnome.org的参考手册

特别有用的是

Table 1. Selector syntax

部分。

简而言之,元素以 GTK 类名命名:GtkButton、GtkLabel 等。

有关默认

GTK3 小部件的类列表,请查看文档目录。

. GTK 按钮是一个不渲染背景的容器小部件,因此在没有看到您尝试使用该选择器应用的实际 CSS 属性的情况下,我无法告诉您为什么它不起作用,但您可能需要单独设置其内容的样式,例如

GtkButton GtkLabel { color: lime; }

选择器本身
GtkButton

应该是正确的。

    

© www.soinside.com 2019 - 2024. All rights reserved.