2016-07-29 3 views

ответ

0

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); 
} 
+0

Лучше использовать 'StyleContext.AddProviderForScreen' один раз, вместо' AddProvider' рекурсивно, кто знает, сколько виджетов. – ptomato

Смежные вопросы