I think you want to look at HierachicalDataTemplate. Here is an example I used for a similar type of purpose that is a Checkbox, TextBox, ItemsSource is a Hierachical collection object (each MapGroup object has a MapGroups property)
<Windows:HierarchicalDataTemplate x:Key="GroupTemplate" ItemTemplate="{StaticResource LayerTemplate}" ItemsSource="{Binding Path=MapGroups}">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" MouseRightButtonDown="StackPanelMouseRightButtonDown" Margin="10,0,10,0" >
<CheckBox IsTabStop="False" IsThreeState="False" IsChecked="{Binding IsVisible, Mode=TwoWay}"
Commands:Click.Command="{Binding TreeNodeClickCommand}" Margin="5,0,5,0"
Commands:Click.CommandParameter="{Binding ElementName=TreeViewControl, Path=SelectedItem}"
Click="CheckBoxClick" VerticalAlignment="Center"/>
<TextBlock Text="{Binding Path=Name}" Width="120" Margin="0" VerticalAlignment="Center"/>
<Slider Minimum="0" Maximum="1" Width="100" Margin="10,0,10,0" Value="{Binding Opacity, Mode=TwoWay}"
Infrastructure:SliderValueChange.Command="{Binding OpacityChangeCommand}"/>
</StackPanel>
</StackPanel>
</Windows:HierarchicalDataTemplate>
Then my Treeview is setup like below
<Controls:TreeView x:Name="TreeViewControl" Background="{StaticResource MainPageBackgroundBrush}"
ItemTemplate="{StaticResource GroupTemplate}" ItemsSource="{Binding MapServiceLayers, Mode=TwoWay}"
FlowDirection="{Binding FlowDirection, Mode=TwoWay}" />
Hope that helps-Joe
Thanks,
-Joe