在使用 ItemsControl 和自定义画布时,我目前在使用 Blend SDK 中的 MouseDragElementsBehavior 时遇到问题。我的自定义画布只是根据 DependencyProperty 从其子项中添加或删除 MouseDragElement。当我手动将项目添加到画布的子项时,这工作得很好,但在移动到 ItemsControl 时似乎已经损坏。
我目前正在使用以下 ItemsControl 代码:
<ItemsControl ItemsSource="{Binding Path=CanvasItems}">
<ItemsControl.DataContext>
<ViewModels:ViewModel/>
</ItemsControl.DataContext>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<my:CustomCanvas Background="Black" IsEditable="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.CanEdit}" AllowDrop="{Binding RelativeSource={RelativeSource Self}, Path=IsEditable}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
在 Canvas.VisualChildrenChanged 方法中添加拖动行为不允许像以前一样移动新创建的对象。
我是否需要将拖动行为添加到传递给 VisualChildrenChanged 的 ContentPresenter 之外的其他内容或提供特殊样式?