Просто скачал blend sdk и увидел, что Interaction.Behaviors доступен только для чтения, поэтому мое решение все равно не будет работать. Я постараюсь найти другое решение
тоящее время у меня возникают проблемы с использованием MouseDragElementsBehavior из Blend SDK при использовании ItemsControl и Custom Canvas. Мой пользовательский холст просто добавляет или удаляет MouseDragElement из его дочерних элементов в зависимости от свойства DependencyProperty. Это работало очень хорошо, когда я вручную добавлял Items к потомкам 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 или обеспечивает специальный стиль?