GTK Sharp несколько стилей для одного виджета - PullRequest
0 голосов
/ 21 июня 2011

Я пытался создать два разных типа кнопок: кнопки с фоном и кнопки без фона.И, к сожалению, я не могу понять, как настроить некоторые кнопки для использования первого стиля, а некоторые кнопки - для второго.Вот пример кода (хотя я сомневаюсь, что это поможет). Есть ли способ изменить стиль кнопки в файле .cs или любой обходной путь?

//init hyperlink


    Button hyperlink = new Button();

    Label hyperlink_label = new Label();

    hyperlink_label.Text = hyperlink_text;

    hyperlink_label.ModifyFg(StateType.Normal, new Gdk.Color(0,0,0));

    hyperlink_label.ModifyFg(StateType.Prelight, new Gdk.Color(255,255,255));

    hyperlink_label.ModifyFg(StateType.Selected, new Gdk.Color(255,255,255));

    Pango.FontDescription hyperlinkFontDesc = new Pango.FontDescription();

    hyperlinkFontDesc.Family = "Adobe Garamond Pro";

    hyperlinkFontDesc.AbsoluteSize = hyperlink_fontSize * Pango.Scale.PangoScale;

    hyperlink_label.ModifyFont(hyperlinkFontDesc);

    hyperlink.Add(hyperlink_label);

    mainWindowFixed.Put(hyperlink, hyperlink_pos[0], hyperlink_pos[1]);





    //init startbutton

    Button startButton = new Button();

    Label startLabel = new Label();

    startLabel.Text = startButton_text;

    startButton.Settings.ThemeName = "Ludwig_AutoUpdater";

    startLabel.ModifyFg(StateType.Normal, new Gdk.Color(255,255,255));

    startLabel.ModifyFg(StateType.Prelight, new Gdk.Color(255,255,255));

    startLabel.ModifyFg(StateType.Selected, new Gdk.Color(255,255,255));

    Pango.FontDescription startLabelFontDesc = new Pango.FontDescription();

    startLabelFontDesc.Family = "Klavika bd";

    startLabelFontDesc.AbsoluteSize = startButton_fontSize * Pango.Scale.PangoScale;

    startButton.Add(startLabel);

    startButton.Child.ModifyFont(startLabelFontDesc);

    startButton.SetSizeRequest(startButton_size[0], startButton_size[1]);

    mainWindowFixed.Put(startButton, startButton_pos[0],startButton_pos[1]);

1 Ответ

1 голос
/ 30 сентября 2011

Не меняйте стиль Gtk.Button. Создайте собственный виджет, полученный из Gtk.Button, и измените стиль этого виджета. Например:

 public class BGButton : Gtk.Button {}

и

 public class NoBGButton : Gtk.Button {}

и теперь измените стиль BGButton и NoBGButton. Тогда, если вы хотите кнопку с фоном, используйте BGButton, иначе используйте NoBGButton.

...