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