2010-11-19 80 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

相關問題