2010-11-19 78 views
3

我的XAML看起来是这样的:当节点展开或折叠时,如何更改WPF树视图中节点的图像?

<TreeView Name="mainTree" ItemsSource="{Binding Folders}"> 
    <TreeView.Resources> 
    <Style TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
     <Style.Triggers> 
     <!-- ??? --> 
     </Style.Triggers> 
    </Style> 
    <HierarchicalDataTemplate DataType="{x:Type local:FolderNode}" ItemsSource="{Binding Children}" > 
     <StackPanel Orientation="Horizontal" Name="myPanel"> 
     <Image x:Name="treeImg" Width="16" Height="16" Source="Images/vsfolder_closed.png"/> 
     <TextBlock Text="{Binding Name}" /> 
     </StackPanel> 
     <HierarchicalDataTemplate.Triggers> 
     <!-- ??? --> 
     </HierarchicalDataTemplate.Triggers> 
    </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 

现在我想的是,如果一个TreeNode扩大,图像源更改图片/ vsfolder_open.png ...

什么是最简单的方法要做到这一点?

在此先感谢!

回答

4

将DataTrigger添加到HierarchicalDataTemplate中。由于您在ViewModel中对属性IsExpanded进行了双向绑定,因此您可以绑定到它并使用TargetName,因为DataTemplate中的名称范围很大。

<HierarchicalDataTemplate.Triggers> 
    <DataTrigger Binding="{Binding IsExpanded}" Value="True"> 
     <Setter TargetName="treeImg" 
       Property="Source" 
       Value="Images/vsfolder_open.png"/> 
    </DataTrigger> 
</HierarchicalDataTemplate.Triggers> 
+0

不错!我显然是WPF的新手,这是我不知道的:)谢谢! – 2010-11-19 19:46:36

+0

没问题!很高兴它工作:) – 2010-11-19 19:49:05

相关问题