I often bind the IsExpanded and IsSelected properties of a TreeViewItem to my viewmodel. This for example makes it possible to make an item pre-expanded when the tree is loaded
@lhildebrandt's answer is generally right, but in my case this solution produces errors that totally disable displaying the view in designer. Specifying
inside tag helped me.
In this way d:DataContext
can also be specified for controls, and we can provide it interfaces, nested classes and even generics without any errors:
https://stackoverflow.com/a/46637478/5598194