代码之家  ›  专栏  ›  技术社区  ›  Jeroen Landheer

当节点展开或折叠时,如何更改WPF树视图中节点的图像?

  •  3
  • Jeroen Landheer  · 技术社区  · 14 年前

    我的Xaml是这样的:

    <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,图像源将更改为Images/vsfolder_open.png。。。

    最简单的方法是什么?

    提前谢谢!

    1 回复  |  直到 14 年前
        1
  •  4
  •   Fredrik Hedblad    14 年前

    将数据触发器添加到HierarchicalDataTemplate。由于在ViewModel中有对IsExpanded属性的双向绑定,因此可以绑定到它并使用TargetName,因为DataTemplate中有namescope。

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