我使用 NodeView 对象以这种方式向用户输出数据(Gtk# 教程):
[Gtk.TreeNode (ListOnly=true)]
public class MyTreeNode : Gtk.TreeNode {
string song_title;
public MyTreeNode (string artist, string song_title)
{
Artist = artist;
this.song_title = song_title;
}
[Gtk.TreeNodeValue (Column=0)]
public string Artist;
[Gtk.TreeNodeValue (Column=1)]
public string SongTitle {get { return song_title; } }
}
Gtk.NodeStore store;
Gtk.NodeStore Store
{
get {
if (store == null)
{
store = new Gtk.NodeStore (typeof(MyTreeNode));
store.AddNode (new MyTreeNode ("The Beatles", "Yesterday"));
store.AddNode (new MyTreeNode ("Peter Gabriel", "In Your Eyes"));
store.AddNode (new MyTreeNode ("Rush", "Fly By Night"));
}
return store;
}
}
protected void OnButton1Clicked (object sender, EventArgs e)
{
// Create a column with title Artist and bind its renderer to model column 0
nodeview1.AppendColumn ("Artist", new Gtk.CellRendererText (), "text", 0);
// Create a column with title 'Song Title' and bind its renderer to model column 1
nodeview1.AppendColumn ("Song Title", new Gtk.CellRendererText (), "text", 1);
nodeview1.ShowAll ();
nodeview1.NodeStore=Store;
}
但是如何为 NodeView 的某些行着色(例如,“The Beatles” - “Yesterday”)?我尝试通过更改 NodeView 样式来做到这一点:背景、基色、前景等,但它不起作用。
编辑:我刚刚意识到,我可以通过这种方式更改列的颜色:
protected void OnButton1Clicked (object sender, EventArgs e)
{
// Create a column with title Artist and bind its renderer to model column 0
nodeview1.AppendColumn ("Artist", new Gtk.CellRendererText (), "text", 0);
// Create a column with title 'Song Title' and bind its renderer to model column 1
nodeview1.AppendColumn ("Song Title", new Gtk.CellRendererText (), "text", 1);
nodeview1.ShowAll ();
nodeview1.NodeStore=Store;
nodeview1.Columns[0].Cells[0].CellBackgroundGdk=new Gdk.Color(0,255,0);
}
但是如何更改特定单元格的颜色?