c# - GTKSharp中的CSS样式

我正在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 +相同。有指针吗?

最佳答案

GTKSharp似乎更像是预期的GTK3行为。

Here is the reference manual from developer.gnome.org

Table 1. Selector syntax部分特别有用。

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

有关默认GTK3 wigets check out the docs talbe of content.的类列表。

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

GtkButton GtkLabel {
    color: lime;
}


选择器本身GtkButton应该正确。

本文翻译自 https://stackoverflow.com/questions/44548008/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c# css gtk3 gtk#


相关文章:

c# - C#中的慢树视图

c# - LINQ函数,用于在输入查询之前检查字符串是否存在

c# - 如何从罗斯林的AttributeSyntax获取AttributeData?

c# - 通过C#登录网站

c# - 为什么在映射到null类型和从null类型映射时,null不会导致NullReferenceException?

c# - SharePoint 2013应用程序-CRUD操作

c# - COM +对象在不同分区中激活

c# - 使用正则表达式检测单词后跟点或空格

c# - 反序列化包含与关键字冲突的属性的JSON响应

c# - 防止属性序列化