2010-09-17 4 views
0

Je le XAML suivant:HierarchicalDataTemplate TreeViewItem

<TreeView x:Name="tvCategoryList" Grid.Column="0" Padding="0" ItemsSource="{Binding CategoriesList}"> 
    <TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Items}"> 
     <TextBlock Text="{Binding ItemName}"/> 
    </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

Dans le code ci-dessus je suis contraignant ObservableCollection CategoriesList où la CustomTreeItem classe possède une propriété de visibilité. Comment puis-je modifier le code ci-dessus pour lier la propriété Visibility afin qu'elle soit mise à jour à chaque fois (définie sur Visibile ou réduite) qu'un élément est sélectionné/désélectionné?

+0

Comment exactement voulez-vous que cela fonctionne? Cacher les éléments dans l'arbre en changeant de sélection semble contre-intuitif. –

Répondre

0

Vous utiliseriez un sélecteur de style pour manipuler la visibilité de l'élément.

Vous utilisez une liaison qui déterre à la propriété sélectionné TreeViewItem:

<HierarchicalDataTemplate ItemsSource="{Binding Items}"> 
    <TextBlock Text="{Binding ItemName}"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" 
        Value="True"> 
        <Setter Property="TextBlock.Visibility" Value="false" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
    </TextBlock> 
</HierarchicalDataTemplate> 

Mais cela ne le rend pas moins contre-intuitif.

Questions connexes