2009-04-24 11 views
2

J'ai un TreeView qui est construit sur un fichier XML et contient un texte et une image dans chaque TreeViewItem. En outre, j'ai un TextBlock et un Image, que je veux lié à la sélectionnée.WPF: Liaison à TreeViewItem sélectionné

Comment est-ce que je peux faire ceci?

Voici mon XAML:

<Window.Resources> 
<HierarchicalDataTemplate DataType="Node" ItemsSource ="{Binding XPath=ChildNode}"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Source="{Binding [email protected]}"/> 
     <TextBlock Text="{Binding [email protected]}" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 
<HierarchicalDataTemplate DataType="ChildNode" ItemsSource ="{Binding XPath=GrandchildNode}"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Source="{Binding [email protected]}" /> 
     <TextBlock Text="{Binding [email protected]}" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 
<DataTemplate DataType="GrandchildNode"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Source="{Binding [email protected]}" /> 
     <TextBlock Text="{Binding [email protected]}" /> 
    </StackPanel> 
</DataTemplate> 
<XmlDataProvider x:Key="xmlNodeList" Source="XMLFile1.xml" XPath="Root"/></Window.Resources><StackPanel> 
<TreeView Name="treeView1" ItemsSource="{Binding Source={StaticResource xmlNodeList}, XPath=Node}" /> 
<TextBlock /> 
<Image /></StackPanel> 

Et voici une des données XML:

<Root> 
<Node Name="AAA" Image="images/1.ico" /> 
<Node Name="BBB" Image="images/2.ico"> 
    <ChildNode Name="bbb 1" Image="images/3.ico"> 
     <GrandchildNode Name="b 1.1" Image="images/4.ico"/> 
     <GrandchildNode Name="b 1.2" Image="images/5.ico"/> 
     <GrandchildNode Name="b 1.3" Image="images/6.ico"/> 
    </ChildNode> 
    <ChildNode Name="bbb 2" Image="images/7.ico"/> 
    <ChildNode Name="bbb 3" Image="images/8.ico"> 
     <GrandchildNode Name="b 3.1" Image="images/9.ico"/> 
     <GrandchildNode Name="b 3.2" Image="images/10.ico"/> 
    </ChildNode> 
    <ChildNode Name="bbb 4" Image="images/11.ico"/> 
</Node> 
<Node Name="CCC" Image="images/12.ico"> 
    <ChildNode Name="ccc 1" Image="images/13.ico"> 
     <GrandchildNode Name="c 1.1" Image="images/14.ico"/> 
     <GrandchildNode Name="c 2.2" Image="images/15.ico"/> 
    </ChildNode> 
</Node></Root> 

Répondre

6

Si vous vous en tenez-vous textBlock & image dans un autre StackPanel pour le rendre un peu plus facile que vous pouvez faire:

<StackPanel DataContext="{Binding ElementName=treeView1, Path=SelectedItem}"> 
    <TextBlock Text="{Binding [email protected]}" /> 
    <Image Source="{Binding [email protected]}" /> 
</StackPanel> 
Questions connexes