The issue based upon your samples is the need for a header template. Add this snippet to your TreeView declaration...
<TreeView.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Margin="2" Source="{Binding ...}"/>
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TreeView.Resources>
This gives you a HeaderTemplate that you can bind to. Of course you have to add the right binding features to get this snippet to compile and work, but otherwise most of your existing code can be salvaged.