我正在 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+ 相同。有什么指点吗?
这是版本问题。
GTK#版本 3.22 正确检测 GtkButton 选择器。我正在使用 GTK 3.14 的本机库。有一个“未列出的 NuGet 包”为 3.22 版本提供 win32 库。奇怪的是,该版本检测到旧的“按钮”、“窗口”...而不是“GtkButton”、“GtkWindow”...标签。