2010-11-19 5 views
3

Benim Xaml şuna benzer: Bir treenode genişletilmişse ki, ben Görüntüler/vsfolder_open.png görüntü kaynak değişiklikleri ne istiyorsunuz ŞimdiDüğüm genişletildiğinde veya daraltıldığında, WPF ağaç görünümünde düğümün görüntüsünü nasıl değiştirebilirim?

<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> 

...

ne kolay yolu olurdu bunu yapmak için?

Şimdiden teşekkürler!

cevap

4

HierarchicalDataTemplate'e bir DataTrigger ekleyin. ViewModel'de Özellik IsExpanded'e iki yönlü bağlandığınızdan, ona bağlanabilirsiniz ve bir DataTemplate'deki namescope nedeniyle TargetName'i kullanabilirsiniz.

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

Nice one! Açıkçası WPF için yeni, bu hakkında bilmediğim oldu :) Teşekkürler! –

+0

Sorun değil! Çalıştığına sevindim :) –

İlgili konular