J'essaie de lier des données à ce ItemsControl
:
<ItemsControl ItemsSource="{Binding Path=Nodes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
En utilisant ce DataTemplate
, j'essaie de positionner individuellement mes Node
éléments sur le Canvas
correctement:
<DataTemplate DataType="{x:Type Model:EndNode}">
<Controls:EndNodeControl Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</DataTemplate>
Cependant, cela ne fonctionne pas comme prévu. Tous mes éléments de noeud sont dessinés les uns sur les autres dans la même position. Des suggestions sur la façon d'accomplir cela?
Les propriétés attachées ne fonctionnent que sur les enfants directs du canevas. ItemsControl placera les contrôles ContentPresenter comme ses enfants directs, vous pouvez donc également ajouter un style pour cela:
<ItemsControl ItemsSource="{Binding Path=Nodes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding Path=XPos}" />
<Setter Property="Canvas.Top" Value="{Binding Path=YPos}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
J'espère que cela t'aides