2013-09-23 1 views
2

저는 WPF에 대해 매우 신선합니다. 여기에 게시 된 많은 이전 질문을 검토 한 후에 가장 가까운 부분입니다. XAML 코드 :Treeview HierarchicalDataTemplate을 사용하십시오. 폴더를 변경하는 트리거

<TreeView x:Name="folderView" Grid.Column="0" Grid.Row="1" BorderThickness="0"> 
    <TreeViewItem Header="Folders" ItemsSource="{Binding SubFolders, Source={StaticResource RootFolderDataProvider}}" Margin="5"/> 

    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type my:FolderView}" ItemsSource="{Binding SubFolders}"> 
      <StackPanel Orientation="Horizontal" Name="myPanel"> 
       <Image x:Name="img" Width="16" Height="16" Source="Images/FolderClosed.png" /> 
       <TextBlock Text="{Binding Name}" /> 
      </StackPanel> 

      <HierarchicalDataTemplate.Triggers> 
       <DataTrigger Binding="{Binding IsExpanded}" Value="True"> 
        <Setter TargetName="img" Property="Source" Value="Images/FolderOpen.png"/> 
       </DataTrigger> 
      </HierarchicalDataTemplate.Triggers> 
     </HierarchicalDataTemplate>  
    </TreeView.Resources> 
</TreeView> 

이 맨 위에 루트 폴더를 제외한 모든 내 하위 폴더에 FolderClosed 이미지를 표시합니다. HierachicalDataTemplate 트리거를 확장해도 트리거되지 않습니다. 도움이 될 것입니다.

답변

5

당신이 TreeViewItem IsExpanded 속성에 바인딩하는 경우, 당신은 당신이 같은 바인딩을 업데이트해야합니다 :

<DataTrigger Binding="{Binding IsExpanded, RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}}" Value="True"> 
    <Setter TargetName="img" Property="Source" Value="Images/FolderOpen.png"/> 
</DataTrigger> 
+0

당신 아이콘 이미지를 변경하는 폴더로 내 문제를 해결했습니다. 상위 노드에서 이미지를 멋지게 표시 할 수 있다면. –

-2

문제점을 지적 할 수 없습니다. 그러나 첫 번째 단계로 바인딩이 작동하는지 여부를 확인해야합니다. 당신은 here

에 언급 된 바인딩 디버깅을 추가 할 수 있습니다 예 :

<Window 
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase" 
    xmlns:local="clr-namespace:DebugDataBindings" 
    x:Class="DebugDataBindings.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid x:Name="layoutRoot"> 
     <Grid.Resources> 
      <local:DebugConverter x:Key="debugConverter" /> 
     </Grid.Resources> 
     <TextBox 
      Text="{Binding Path=Customer.FirstName, diag:PresentationTraceSources.TraceLevel=High}" 
      Height="23" HorizontalAlignment="Left" Margin="90,18,0,0" VerticalAlignment="Top" Width="120"/> 
    </Grid> 
</Window> 
관련 문제