我目前正在使用单声道和 gtk#。关于 TreeView 有这个Tutorial。我想实现在“控制模型的使用方式”下呈现的相同的东西所以我有歌曲类和渲染方法来显示艺术家和标题。
但我想通过 TreeStore 而不是 ListStore 来显示它。这样我每个字母都有一个根节点,并且在这个节点下应该显示所有以这个字母开头的艺术家。
我的问题如何将这些 RootNodes 添加到 TreeStore?我应该在哪里添加它们?
songs.Add(new Song("Dancing Djs vs. Roxette", "Fading like a flower"));
songs.Add(new Song("Xaiver","give me the right"));
songs.Add(new Song("Daft Punkt","Technologic"));
TreeStore musicListStore = new TreeStore(typeof(Song));
foreach (var s in songs)
{
musicListStore.AppendValues(s);
}
treeview1.Model = musicListStore;
treeview1.AppendColumn("Artist", new CellRendererText(),new TreeCellDataFunc(RenderArtistName));
treeview1.AppendColumn("Title", new CellRendererText(),new TreeCellDataFunc(RenderSongTitle));
private void RenderArtistName(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
{
Song s = model.GetValue(iter,0) as Song;
(cell as CellRendererText).Text = s.Artist;
}
private void RenderSongTitle(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
{
Song s = model.GetValue(iter,0) as Song;
(cell as CellRendererText).Text = s.Title;
}
所以我想实现每个字母都有根节点,每个字母下面应该列出以这个字母开头的所有艺术家。
我的问题是如何将字母添加到 TreeStore 以及我如何知道在哪里插入每首歌曲。
这是我希望它看起来的屏幕截图(我不允许直接上传它们。所以我不得不使用外部托管。对不起): 屏幕截图