私は現在 mono と gtk# を使用しています。TreeView に関しては、このチュートリアルがあります。「モデルの使用方法の制御」で提示されているのと同じことを達成したいので、アーティストとタイトルを表示するためのソングクラスとレンダリングメソッドがあります。
しかし、ListStore ではなく TreeStore を介して表示したいと考えています。各レターにルートノードがあり、このノードの下に、このレターで始まるすべてのアーティストが表示されるようにします。
私の問題は、これらの 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;
}
したがって、各文字に RootNodes があり、各文字の下に、この文字で始まるすべてのアーティストがリストされている必要があります。
私の問題は、文字を TreeStore に追加する方法と、各ソングを挿入する場所を知る方法です。
これがどのように見えるかのスクリーンショットです(直接アップロードすることは許可されていません。したがって、外部ホストを使用する必要がありました。Sry): スクリーンショット