2016-07-29 13 views
0

私はLinux上でGTK#3アプリケーションを持っています。私は、システムではなくアプリケーションから強制的にテーマを選択したいと思います。実行時のテーマを変更する

これを達成する方法はありますか?

答えて

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

どのように多くのウィジェットを知っている人に再帰的に代わりに 'AddProvider'の、一度' StyleContext.AddProviderForScreen'を使用することをお勧め。 – ptomato

関連する問題