我想通过 F# 使用 Gtk# 小部件显示目录结构,但我很难弄清楚如何将 TreeViews 转换为 F#。假设我有一个如下所示的目录结构:
Directory1
SubDirectory1
SubDirectory2
SubSubDirectory1
SubDirectory3
Directory2
我将如何使用 F# 显示带有 Gtk# 小部件的这种树结构?
编辑:
gradbot 是我希望的答案,但有几个例外。如果您使用 ListStore,您将失去扩展级别的能力,如果您改为使用:
let musicListStore = new Gtk.TreeStore([|typeof<String>; typeof<String>|])
你会得到一个可扩展级别的布局。但是,这样做会中断对 AppendValues 的调用,因此您必须为编译器添加一些线索来确定要使用哪个重载方法:
musicListStore.AppendValues (iter, [|"Fannypack" ; "Nu Nu (Yeah Yeah) (double j and haze radio edit)"|])
请注意,列是作为数组显式传递的。
最后,您可以使用 Append Values 返回的 ListIter 进一步嵌套级别
let iter = musicListStore.AppendValues ("Dance")
let subiter = musicListStore.AppendValues (iter, [|"Fannypack" ; "Nu Nu (Yeah Yeah) (double j and haze radio edit)"|])
musicListStore.AppendValues (subiter, [|"Some Dude"; "Some Song"|]) |> ignore