Доброго всем времени суток!
Ранее задавал вопрос о биндинге дочерних элементов к канвасу, ответа на него так и не поступило, и потратив энное количество времени на чтение интернетов, я пришёл к определённым выводам, но хотелось бы проконсультироваться с более опытными камрадами.
И так: идея состоит в том, что мне нужно визуализировать связь между объектами. Это похоже на узловое визуальное программирование, или построение модели базы данных, где куча блоков, связаны между собой линиями, все их можно таскать по форме и как-то ещё взаимодействовать.
Изначально я создал компонент, дочерний от Canvas, но сделано это было просто для того, чтобы при создании он сам себя заполнял сеткой по фону, а так, по факту, это остался всё тот же холст.
Есть несколько задач, которые эта лабуда должна выполнять:
- Размещение на себе узлов (которые являются пользовательскими контролами)
- Перетаскивание этих самых узлов по холсту свободно
- Изменение масштаба всего этого балагана
- Перемещение мышкой всей схемы целиком
Я стараюсь придерживаться паттерна mvvm, но в данном конкретном случае я уже смирился, что это будет, скорее всего невозможно в полной мере, поэтому и решения буду искать в более широких горизонтах.
И вот какие решения я придумал.
- Продолжить писать как уже начал, используя холст и вынося то, что нельзя забиндить в голый код вьюхи
- Пойти на уровень ниже и написать собственный контрол, который будет выполнять все, необходимые мне функции
- Найти какое-то иное, готовое решение и применить его
- Опуститься на совсем низкий уровень и фигачить всё приложение, не использую все эти ваши wpf, canvas и т.д. Возможно для этого стоит отказаться от шарпа и пересесть на плюсы.
Прошу более опытных коллег посоветовать, куда и как копать в данном случае? Какой из подходов выбрали бы вы?
Заранее всем большое спасибо!