Я привязываю ItemsControl с Canvas как ItemsPanelTemplate к ObservableCollection.
Я хочу сделать элементы перетаскиваемыми с помощью DraggableExtender, как указано в Перетаскивание изображения в WPF (Я не хочу использовать преобразования - мне нужно использовать свойства Canvas Left и Top)
Это определяется как:
<ItemsControl ItemsSource="{Binding Path=Nodes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Views:NodeView DataContext="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Utilities:DraggableExtender.CanDrag" Value="True" />
<Setter Property="Canvas.Left" Value="{Binding Path=X}" />
<Setter Property="Canvas.Top" Value="{Binding Path=Y}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
DraggableExtender требует, чтобы родительский элемент элемента был Canvas, но родительский элемент моего элемента (contentpresenter) имеет значение null, поэтому перетаскивание не работает.
Возникает очевидный вопрос - что я делаю не так?