Quel serait le moyen le plus efficace pour changer l'orientation de l'arborescence de WPF. Je voudrais utiliser la fonctionnalité expand-collapse pour travailler de gauche à droite plutôt que de haut en bas. C'est à dire. Quand je clique sur le bouton d'expansion d'un treenode, je voudrais que son sous-noeud apparaisse à droite du parent et que le retrait soit de haut en bas. Les lignes verticales qui relient le nœud doivent également être horizontales.WPF TreeView avec orientation horizontale?
Répondre
Voici un excellent article de Josh Smith on CodeProject qui détaille exactement comment faire ce genre de chose.
développiez John Smith's CodeProject article, si vous voulez avoir la disposition horizontale seulement un niveau particulier dans l'arbre (au lieu de tous les niveaux comme son article montre), puis juste définir la propriété ItemsPanel
sur le TreeViewItem
au niveau que vous voulez pour avoir un StackPanel
.
Ce n'était pas intuitif pour moi au début, mais vous pouvez accéder à cette propriété via la propriété ItemContainerStyle
du HierarchicalDataTemplate
pour le calque au-dessus du calque que vous voulez horizontal.
Comme ceci:
<ItemsPanelTemplate
x:Key="ItemsPanelForHorizontalItems">
<StackPanel
Orientation="Horizontal"/>
</ItemsPanelTemplate>
<HierarchicalDataTemplate
x:Key="DataTemplateForLayerAboveHorizontalItems"
DataType="{x:Type viewModel:ThingHavingHorizontalItems}"
ItemsSource="{Binding HorizontalItems}"
ItemTemplate="{StaticResource DataTemplateForLayerWithHorizontalItems}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style
TargetType="TreeViewItem">
<Setter
Property="ItemsPanel"
Value="{StaticResource ItemsPanelForHorizontalItems}"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<ContentControl
Content="{Binding}"
ContentTemplate="{StaticResource DataTemplateForThingHavingHorizontalItems}"/>
</HierarchicalDataTemplate>
Suivant ce modèle vous permettra de définir la mise en page horizontale pour une couche individuelle au sein de votre arbre, à l'exception de la couche de racine. Et si vous souhaitez que le calque racine soit horizontal, définissez simplement la propriété ItemsPanel
sur le TreeView
pour utiliser un StackPanel
horizontal.
- 1. WPF TreeView avec style personnalisé
- 2. WPF UserControl TreeView Hauteur
- 3. WPF TreeView Binding
- 4. WPF TreeView Binding
- 5. WPF: Icônes dans TreeView
- 6. WPF: Personnalisé + - dans TreeView
- 7. WPF TreeView Clear Selection
- 8. Trouver un parent dans wpf-treeview
- 9. ItemsControl avec l'orientation horizontale
- 10. WPF TreeView Point sélectionner Problème
- 11. Synchronisation WPF Treeview et ListBox
- 12. WPF question de conception impliquant treeview
- 13. MPMoviePlayer Orientation
- 14. WPF Masquer les éléments avec trigger dans treeview
- 15. WPF Treeview avec des colonnes de largeur fixe
- 16. Restreindre la sélection d'un TreeView WPF avec des icônes en texte seulement
- 17. Orientation paysage pour UITabBarController?
- 18. orientation objet et sérialisation
- 19. UITextField en orientation paysage
- 20. Difficulté avec les applications avec une orientation paysage forcé
- 21. WPF- Treeview - Comment ajouter des nœuds enfants
- 22. Lier un document XML à WPF TreeView
- 23. le niveau d'un treeview dans WPF?
- 24. WPF TreeView n'affiche pas le contenu
- 25. Construction TreeView (C#) dans WPF Application
- 26. données XML Binding à WPF TreeView contrôle
- 27. Réduire ViewState avec TreeView
- 28. SplitContainer avec TreeView
- 29. treeview avec Checkbox
- 30. TreeView avec DropdownList
Je dois ajouter que l'expansion d'une couche avec une orientation différente du reste brise la virtualisation de l'interface utilisateur. Voir [cette question] (http://stackoverflow.com/q/42911247/3063273) si vous savez comment résoudre ce problème –