在运行时更改主题
Change the theme at runtime
我在 Linux 下有一个 GTK# 3 应用程序,我想强制从应用程序而不是系统中选择一个主题。
有办法实现吗?
GTK# 3 可以在运行时加载一个 CSS 主题并且你可以递归地将它应用到一个小部件。
var cssProvider = new CssProvider();
cssProvider.LoadFromData(yourCssThemeAsString);
ApplyCssRecursively(window, cssProvider, UInt32.MaxValue);
static void ApplyCssRecursively(Widget widget, IStyleProvider provider, uint priority)
{
widget.StyleContext.AddProvider(provider, priority);
var container = widget as Container;
if (container == null) return;
foreach (var child in container.Children)
ApplyCssRecursively(child, provider, priority);
}
我在 Linux 下有一个 GTK# 3 应用程序,我想强制从应用程序而不是系统中选择一个主题。
有办法实现吗?
GTK# 3 可以在运行时加载一个 CSS 主题并且你可以递归地将它应用到一个小部件。
var cssProvider = new CssProvider();
cssProvider.LoadFromData(yourCssThemeAsString);
ApplyCssRecursively(window, cssProvider, UInt32.MaxValue);
static void ApplyCssRecursively(Widget widget, IStyleProvider provider, uint priority)
{
widget.StyleContext.AddProvider(provider, priority);
var container = widget as Container;
if (container == null) return;
foreach (var child in container.Children)
ApplyCssRecursively(child, provider, priority);
}