«Бесконечная» панель в WPF

Для внутреннего инструмента мне нужно создать что-то похожее на редактор узлов Blender (см. изображение ниже) или редактор чертежей UE4 с WPF.

Редактор узлов Блендера

Бэкэнд и отдельные блоки не являются проблемой, но я не уверен, что делать с произвольным размером и расширением холста. Я думал об использовании Canvas внутри ScrollViewer, но я думаю, что было бы трудно прокрутить влево (т. е. если бы пользователю пришлось добавить узлы слева от того, что думает ScrollViewer это край). Я относительно новичок в WPF, поэтому кто-то может указать мне правильное направление?

7 голосов | спросил Nick 22 J000000Wednesday15 2015, 05:03:08

1 ответ


0

Вам нужно будет написать свою собственную Panel реализацию с IScrollInfo интерфейс. С помощью этого интерфейса вы можете в любое время динамически изменять размер экстента вашей панели, используя метод ScrollOwner.InvalidateScrollInfo(). Вот несколько ссылок, с которых вы можете начать:

серия замечательных постов в блоге Бена Констебля об IScrollInfo

Пример виртуализации Canvas

Ваш окончательный код должен содержать ItemsControl, который использует вашу пользовательскую панель внутри ScrollViewer. Что касается рисования связей между блоками, я лично использовал бы прозрачный слой над вашей панелью с кодом OnRender, который рисует их, используя DrawingContext

EDIT:

Ознакомьтесь с этой статьей . Здесь есть управляющий элемент, похожий на рабочий узел.

ответил ghord 22 J000000Wednesday15 2015, 15:34:36

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132