В настоящее время у меня возникла проблема с использованием MouseDragElementsBehavior из Blend SDK при использовании ItemsControl и Custom Canvas. Мой пользовательский холст просто добавляет или удаляет MouseDragElement из его дочерних элементов в зависимости от DependencyProperty. Это работало просто отлично, когда я вручную добавлял элементы к дочерним элементам Canvas, но, похоже, сломался при переходе к 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 не позволяет перемещать вновь созданный объект, как раньше.
Нужно ли добавлять поведение Drag к чему-то другому, кроме ContentPresenter, который передается VisualChildrenChanged, или предоставлять специальный стиль?