Как использовать TreeViewDragDropTarget MVVM? - PullRequest
2 голосов
/ 24 ноября 2010

Кажется, что в TreeViewDragDropTarget задействовано много "закулисной магии".

Все посты, которые я видел до сих пор, останавливаются на представлении дерева, не объясняя, что происходит с коллекцией.данных, к которым привязан TreeView.

Как TreeViewDragDropTargt связывается со свойством ViewModel, к которому привязан мой TreeView?Есть ли MVVM-ориентированные пошаговые руководства или руководства по TreeView Drag and Drop ala MVVM?

ОБНОВЛЕНИЕ: "Если элемент перетаскивается на цель перетаскивания, он добавляется во вложенный элемент управления, если вложенный элемент управленияпривязан к ObservableCollection (или любой коллекции, которая реализует INotifyCollectionChanged и содержит элементы того же типа, что и элемент, который был удален). "

И это означает, что я могу подключиться к событию CollectionChangedколлекции ObservableCollection мой TreeView должен поддерживать синхронизацию моей модели.

Есть ли лучший вариант?

1 Ответ

1 голос
/ 05 февраля 2013

Лучшего варианта пока не видел.Помните, что весь смысл шаблонов MVC / MVP / MVVM заключается в том, чтобы тестировать как можно больше кода.

Для перетаскивания я использовал презентацию -> Код позади -> Messenger Поднимите сообщение «Элементы добавлены» ... и поймайте событие из ViewModel.

Если есть пользовательскийЛогика в коде, например, подтверждает, что «источник» имеет допустимый статус, например, или имеет правильный тип и т. д., вы можете делегировать эту проверку в «службу» (Dependency Injected), которая будет специализироваться на обработкеэти странные случаи.Код, стоящий за, становится миминальным, а «служба перетаскивания» становится тестируемой.

Нужна ли вам действительно «Служба перетаскивания», и если да, то если у вас есть одна «Служба перетаскивания» на ViewModel или однаприложение ?Я отвечу твоим классическим ответом «Это зависит».

...