В настоящее время у меня проблема с использованием 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 не позволяет перемещать вновь созданный объект, как раньше.
Нужно ли добавлять поведение перетаскивания к чему-то другому, кроме ContentPresenter, который передается в VisualChildrenChanged, или предоставлятьособый стиль?