WPF绑定画布上可拖动项目的位置

时间:2017-01-03 05:30:15

标签: c# wpf canvas

我有以下设置:

<ItemsControl ItemsSource="{Binding Nodes}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <local:Node>
            </local:Node>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

我发现简单地将节点上的属性Canvas.LeftCanvas.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>

0 个答案:

没有答案