2010-12-06 5 views
2

J'ai une vue arborescente avec des cases à cocher pour chaque élément utilisant un DataTemplate et 2 HierarchicalDataTemplates (ma liste consolidée se compose de 2 ou 3 niveaux, et les cases à cocher n'apparaissent qu'au niveau feuille - la dernière un).WPF Treeview - Problème d'interface utilisateur étrange sur un enfant cliquez sur

La feuille ressemble à ceci:

<TreeView ItemsSource="{Binding}"> 
<DataTemplate DataType="{x:Type local:MatchDataLeaf}"> 
    <Grid Margin="3"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="240"/> 
      <ColumnDefinition Width="100"/> 
      <ColumnDefinition Width="150"/> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="60"/> 
     </Grid.ColumnDefinitions> 

     <StackPanel Grid.Column="0" Orientation="Horizontal"> 
      <CheckBox x:Name="selectCheckBtn" Grid.Column="0" IsChecked="True" Click="select_Click" 
         Tag="{Binding}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}"/> 
      <TextBlock Grid.Column="1" Margin="5,0,0,0" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="12" FontWeight="Bold" Foreground="Black" VerticalAlignment="Center"/> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

Mon problème se produit lorsque je clique sur un de la part de TextBlock des éléments de feuille - si je clique sur le tout case à cocher est OK. Lorsque je clique sur l'élément, tout l'arbre se déplace vers la gauche, cachant le bouton + expand, et je n'ai pas le moyen de le récupérer. Cela aligne en quelque sorte la case à cocher à gauche du conteneur, cachant ainsi tout ce qui est en haut et à gauche de celui-ci. Je me rends compte que c'est un problème d'interface utilisateur étrange, et je doute que quelqu'un l'ait déjà vu auparavant. Alors laissez-moi poser cette question: Y at-il un moyen de désamorcer d'une manière ou d'une autre ce clic? Puis-je dire à WPF de ne rien faire si je clique sur cette partie de l'élément? J'ai essayé de définir le Handled à true sur le gestionnaire MouseLeftButtonUp du Textblock, mais cela ne me sert à rien.

Toutes les autres suggestions sont les bienvenues - Je n'ai aucune idée de comment aborder cette chose.

Répondre

0

essayer de mettre l'ensemble TreeView dans un ScrollViewer pour moi, cela le contenu est trop grand pour adapter la surface disponible:

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
     <TreeView ..../> 
</ScrollViewer> 
+0

Ajout ScrollViewer ne m'a pas aidé - Mais vous avez raison - je viens de faire tout de la largeur/hauteur à Auto et élargi toute la fenêtre, et tout est là - Merci. – user350213

+0

Btw, est-il un moyen de changer l'état sélectionné d'un élément à RIEN? Je sais que je peux utiliser Trigger pour changer le style de l'état sélectionné, mais comment ne pas le sélectionner du tout? – user350213

+0

merci de marquer la réponse! Je ne suis pas sûr de ce que vous entendez par "état sélectionné d'un élément à ne rien faire", il serait préférable de poster une autre question, car c'est un sujet différent. – thumbmunkeys

Questions connexes