2013-09-23 3 views
2

Я довольно свеж для WPF, и это самое близкое, что я пришел к достижению того, что я решил сделать после обзора многих ранее заданных вопросов, размещенных здесь. код XAML:Использование TreeView HierarchicalDataTemplate.Triggers для изменения значка папки

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

 Смежные вопросы

  • Нет связанных вопросов^_^