Импровизируя с сетевыми узлами – построение диаграмм с помощью WPF-элемента NetworkView
Если вы работаете над проектами, в которых важную роль играют узловые диаграммы, однако Visio или подобные коммерческие продукты выглядят чрезмерностью, обратите внимание на проект NetworkView: Клиентский элемент управления WPF для визуализации и редактирования сетей, графов и блок-схем, расположенный на сайте CodeProject.
Я не встречал элементов управления, подобных этому, которые бы были одновременно свободно распространяемыми, с открытым исходным кодом и в значительной степени завершенными. Мне понравилось не только как работают проекты примеров (что уже хорошо), но и наведенный глянец, вроде этого окна подсказки.
Но что даже лучше самого элемента управления, так это глубина сопровождающей статьи.
«В статье изучается использование и реализация пользовательского элемента управления WPF, применяемого для отображения и редактирования диаграмм, графов и блок-схем. NetworkView, как я его назвал, был вдохновлен и во многом похож на стандартные WPF-элементы ItemsControl and TreeView. В статье и в примерах кода показано, как использовать эти элементы из XAML и из кода C#.
Статья разбита на две главные части.
В части 1 рассматривается использование элемента NetworkView с разбором прух проектов-примеров. Эта часть и секция ссылок достаточны, если вы хотите научиться использовать NetworkView.
Часть 2 посвящена деталям реализации. Она будет полезна, если вы хотите создать собственные модификации NetworkView или если вы хотите понять мой подход к разработке сложных пользовательских элементов управления в WPF.
В конце статьи располагается секция ссылок, описывающая доступные свойства, методы и команды, которые делаются видимыми NetworkView.
В предыдущих статьях я рассматривал ряд приемов WPF: использование декоративных элементов, изменение масштаба и панорамирование, привязка к позиции элемента интерфейса и самый последний перетаскивание множества выбранных элементов. NetworkView и приложение-пример используют все эти приемы. Я не буду детально рассматривать их здесь. Вместо этого, в соответствующих местах я буду ссылаться на предыдущие статьи.
NetworkView предназначен для использования с моделью представлений, специфичной для приложения. …
...
От идеи и через реализацию эти 27 страниц статьи проходят по всем существенным пунктам и далее.
Включенные исходники загружаются и запускаются без проблем. Вот снимок решения.
Код выглядит логически организованным и легко понимаемым.
А этот снимок показывает, как легко он может быть использован.
Если вам нужен этот элемент управления или вы просто хотите узнать, как можно разработать что-то подобное, статья и исходники станут интересным чтением.