VariusRain
@VariusRain
музыкант-программист-конструктор

Нужно много, но не сложно рисовать. Какой подход выбрать?

Доброго всем времени суток!
Ранее задавал вопрос о биндинге дочерних элементов к канвасу, ответа на него так и не поступило, и потратив энное количество времени на чтение интернетов, я пришёл к определённым выводам, но хотелось бы проконсультироваться с более опытными камрадами.

И так: идея состоит в том, что мне нужно визуализировать связь между объектами. Это похоже на узловое визуальное программирование, или построение модели базы данных, где куча блоков, связаны между собой линиями, все их можно таскать по форме и как-то ещё взаимодействовать.

Изначально я создал компонент, дочерний от Canvas, но сделано это было просто для того, чтобы при создании он сам себя заполнял сеткой по фону, а так, по факту, это остался всё тот же холст.

Есть несколько задач, которые эта лабуда должна выполнять:
  • Размещение на себе узлов (которые являются пользовательскими контролами)
  • Перетаскивание этих самых узлов по холсту свободно
  • Изменение масштаба всего этого балагана
  • Перемещение мышкой всей схемы целиком


Я стараюсь придерживаться паттерна mvvm, но в данном конкретном случае я уже смирился, что это будет, скорее всего невозможно в полной мере, поэтому и решения буду искать в более широких горизонтах.

И вот какие решения я придумал.

  • Продолжить писать как уже начал, используя холст и вынося то, что нельзя забиндить в голый код вьюхи
  • Пойти на уровень ниже и написать собственный контрол, который будет выполнять все, необходимые мне функции
  • Найти какое-то иное, готовое решение и применить его
  • Опуститься на совсем низкий уровень и фигачить всё приложение, не использую все эти ваши wpf, canvas и т.д. Возможно для этого стоит отказаться от шарпа и пересесть на плюсы.


Прошу более опытных коллег посоветовать, куда и как копать в данном случае? Какой из подходов выбрали бы вы?
Заранее всем большое спасибо!
  • Вопрос задан
  • 384 просмотра
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
по моему классический случай, когда не знаю как называется создает большую проблему
- на сколько я помню, задача все еще не перешла в ранг тривиальных, зато точно уже есть решения во множестве
- подход [к снаряду] первый c# визуализация графов
- подход к снаряду второй ща пороюсь в закромах и накидаю ссылок, то есть буду обновлять ответ, постараюсь не много раз (ну тут уж звиняйте гарантий точной пригодности быть не может)
.. или платные не нужны совсем? (тогда github - поиск по правильным словам, и стукните, что бы я не спамил платными решениями поздно ))).. пошли кандидаты:
- https://www.yworks.com/products/yfiles-net
- https://www.nwoods.com/products/godiagram/
- https://www.nevron.com/products-dot-net-vision.aspx
.. продолжение следует пожалуй я преувеличил свои закрома (на самом деле что то найдется почти у всех популярных платных вендоров либ. но я проверил на соотвествие запросу. как его понял)

ps надеюсь донес свою точку зрения, а уж если хоть какой то пункт будет полезен, то вообще супер. удачи! ))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы