我正在尝试将数据绑定到此ItemsControl
<ItemsControl ItemsSource="{Binding Path=Nodes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
通过使用这个DataTemplate
,我试图在Canvas
上正确地单独定位我的Node
元素:
<DataTemplate DataType="{x:Type Model:EndNode}">
<Controls:EndNodeControl Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</DataTemplate>
然而,它并没有像预期的那样工作。我的所有节点元素都是在相同的位置一个接一个地绘制的。对如何实现这一点有什么建议吗?
发布于 2009-08-12 10:38:47
附加的属性仅适用于Canvas
的直接子项。ItemsControl
会将ContentPresenter
控件作为其直接子控件,所以您可能也想为此添加一个样式:
<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>
https://stackoverflow.com/questions/1265364
复制相似问题