2017-09-02 1 views
0

Très nouveau sur WPF.Comment empêcher le DataTemplate de TreeView de provoquer l'expansion horizontale du contrôle?

  <TreeView Grid.Column="0" x:Name="DataTree" MinWidth="175" BorderThickness="0"> 
       <TreeView.Resources> 
        <HierarchicalDataTemplate DataType="{x:Type self:DispatchTreeTerritoryItem}" ItemsSource="{Binding ClientLocations}"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Name}" /> 
         </StackPanel> 
        </HierarchicalDataTemplate> 
        <DataTemplate DataType="{x:Type self:DispatchTreeClientLocationItem}"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding ClientName,StringFormat='({0}) '}" /> 
          <TextBlock Text="{Binding Address}" /> 
         </StackPanel> 
        </DataTemplate> 
       </TreeView.Resources> 
      </TreeView> 

Les données des propriétés DispatchTreeClientlocationItem (ClientName et Address), ne correspondent pas à l'intérieur de la largeur de l'arborescence. Ainsi, lorsque les éléments sont créés, le contrôle treeview se développe horizontalement pour permettre à tout le texte du nœud de l'arbre d'être visible.

Ce comportement n'est pas souhaité. Je voudrais qu'il se comporte comme WinForms TreeView, où le texte est juste tronqué au bord du contrôle. Est-ce possible dans WPF? Et comment?

MISE À JOUR

Suite @ commentaire de Funk et la suggestion de la question liée mon TreeView XAML ressemble maintenant à:

<TreeView x:Name="DataTree" Grid.Column="0" MinWidth="175" BorderThickness="0" 
        ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 

J'ai observé aucun changement dans le comportement. Lorsque le texte du noeud est trop long pour tenir dans les limites horizontales de TreeView, le TreeView se développe horizontalement pour afficher tout le texte.

Voici quelques captures d'écran pour illustrer le problème. Lors de l'expansion d'un nœud de territoire, le contenu du nœud enfant provoque l'expansion horizontale de TreeView.

collapsed treeviewexpanded treeview

+1

Vous pouvez Désactivez l'expansion en définissant ScrollViewer.HorizontalScrollBarVisibility = "Disabled" sur le TreeView. Ref [this] (https://stackoverflow.com/questions/45776693/making-a-portion-of-a-treeviewitem-wrap), en le poussant un peu plus loin. – Funk

+0

@ Funk: suite à votre suggestion n'a produit aucun changement observable. –

+1

@SamAxe, dans quel conteneur TreeView est situé? si une grille et columnDefinition a 'Width =" Auto "', l'expansion est un comportement attendu. try set MaxWidth ou la largeur proportionnelle – ASh

Répondre

1

si TreeView est situé dans un Grid et ColumnDefinition a Width="Auto", l'expansion est un comportement attendu.

Essayez de mettre MaxWidth (sur ColumnDefinition ou TreeView), ou de la largeur proportionnelle */largeur fixe (sur ColumnDefinition)

lignes de la grille (RowDefinition) ont un comportement similaire lorsque leur hauteur est réglée sur Auto