Как изменить изображение узла в древовидном представлении WPF, когда узел развернут или свернут? - PullRequest
3 голосов
/ 19 ноября 2010

Мой 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>

Теперь мне хотелось бы, чтобы при расширении триода источник изображения изменился на Images / vsfolder_open.png ...

Чтобудет самый простой способ сделать это?

Заранее спасибо!

1 Ответ

4 голосов
/ 19 ноября 2010

Добавьте DataTrigger к HierarchicalDataTemplate. Поскольку у вас есть двусторонняя привязка к свойству IsExpanded во ViewModel, вы можете привязать его и использовать TargetName из-за именной области в DataTemplate.

<HierarchicalDataTemplate.Triggers>
    <DataTrigger Binding="{Binding IsExpanded}" Value="True">
        <Setter TargetName="treeImg"
                Property="Source"
                Value="Images/vsfolder_open.png"/>
    </DataTrigger>
</HierarchicalDataTemplate.Triggers>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...