我有以下设置:
<ItemsControl ItemsSource="{Binding Nodes}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:Node>
</local:Node>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
我发现简单地将节点上的属性Canvas.Left
和Canvas.Top
绑定到他们的Position
实际上并没有将它们放在Canvas上,因为它们被包装到{{1}中像这样:
ContentPresenter
我该如何解决这个问题?
我考虑使用ItemsPresenter
|--Canvas
|--ContentPresenter
|---Node
来设置ItemsControl.ItemContainerStyle
的样式,但我无法弄清楚如何将ContentPresenter
的属性绑定到ContentPresenter
的位置。
完整性Node
大致如下:
local:Node
后面有以下代码:
<UserControl x:Class="MyApp.Views.Node"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
PreviewMouseLeftButtonDown="OnMouseDown"
PreviewMouseMove="OnMouseMove">
<Label Content="{Binding}"/>
</UserControl>