Я хотел бы отобразить структуру каталогов, используя виджеты Gtk # через F #, но мне трудно понять, как перевести TreeViews в F #. Скажем, у меня была структура каталогов, которая выглядит следующим образом:
Directory1
SubDirectory1
SubDirectory2
SubSubDirectory1
SubDirectory3
Directory2
Как бы я показал эту древовидную структуру с виджетами Gtk #, используя F #?
EDIT:
Градбот был ответом, на который я надеялся, с несколькими исключениями. Если вы используете 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)"|])
Обратите внимание, что столбцы явно передаются в виде массива.
Наконец, вы можете вложить уровни еще дальше, используя 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