Figured it out on my own. The trick is to use DelegateModel, Repeater and Row/Column layouts, not TreeView.
- Create a component which will show your current node using DelegateModel.
- Use a Repeater to create children - let the component dynamically create another instance of itself, assign the current node as the rootIndex of newly constructed DelegateModel, and set it as the model for the Repeater.
- By properly using layouts, you can position your nodes exactly as in the attached image.