J'ai une structure d'arbre que je l'utilise dans un TreeView comme celui-ciWPF Dessiner la structure d'arbre avec rectanges les uns sur les autres
La racine est dans un objet ObservableCollection<Component>
. Un Component
a une propriété x, y, width, height, children et name. Je veux utiliser la même arborescence pour dessiner chaque Component
avec Rectancle
avec des objets enfants dessinés sur le dessus. Quelque chose comme ça
J'ai essayé avec ListBox comme ce
<!-- in Resources -->
<DataTemplate DataType="{x:Type m:Component}">
<Border BorderBrush="LightBlue" BorderThickness="1">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Cursor="Hand" Fill="AliceBlue"/>
<Label Content="{Binding Name}" Margin="5"/>
</Grid>
</Border>
</DataTemplate>
<ListBox ItemsSource="{Binding ComponentsToDraw}"
x:Name="listBox"
SelectionMode="Extended"
SelectionChanged="listBox_SelectionChanged">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Background="Transparent"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Left" Value="{Binding X}"/>
<Setter Property="Canvas.Top" Value="{Binding Y}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
mais ne peut pas obtenir de tirer quoi que ce soit, mais le premier de mon arbre Levet. Également essayé avec un Treeview mais ne peut pas l'obtenir pour arrêter de dessiner mes objets Component
comme un panneau de pile.
Espérons que n'importe qui a une solution ou une meilleure manière d'aller.
PS. Je n'ai pas inclus l'élément 'Solution' dans le dessin.
Comment définissez-vous X, Y? global ou relatif? – sTrenat
Un UserControl peut être un meilleur ajustement ici parce que vous obtenez beaucoup plus de contrôle sur elle. Commencez avec un StackPanel de canevas et ajoutez chaque élément imbriqué à son canevas parent. – Lennart
@sTrenat Je pensais à propos si je pouvais obtenir cette structure d'arbre à travailler. Sinon global pourrait fonctionner aussi bien je suppose – smok