#c_sharp #wpf
Моя задача - создать небольшой текстовый редактор (в качестве диплома), только с разнообразными фичами, вроде сниппетов, вставки формул и т.д. Решение - строить приложение на базе RichTextBox и FlowDocument's и прикручивать требуемый функционал. Проблема Не совсем понимаю, как контейнер FlowDocument разбивает содержимое на страницы. Вернее, в какой момент, например, тот же Word понимает, что пора переходить на новую страницу? Из чего возникает резонный вопрос: если я хочу на UI отображать большой документ на разных визуальных страницах, то как это лучше всего реализовать? Должны ли быть свои RichTextBox на каждую визуальную страницу, или лучше написать свой собственный контейнер FlowDocument (который, очевидно, будет хуже самого ричбокса) разбивающий содержимое на разные страницы? Кстати, есть мнение, что RichTextBox не является самым оптимальным элементом управления для таких целей.
Ответы
Ответ 1
Не делал такого, но могу предположить, что структура должна выглядеть как то так public class Document: IEnumerator, IEnumerable { // Реализацию интерфейсов я писать не буду // Основа тут именно IEnumerator, тебе придется определить // как разделять документ на страницы (скорее всего по высоте содержимого) // То есть то, что имеет суммарную высоту меньше высоты страницы, // а с учетом следующего объекта - больше // будет являться текущей страницей (Current), // а MoveNext будет перемещать указатель на конец текущей страницы // после последнего ее элемента } public class DocPage { // Саму страницу скорее всего нужно разбить на составляющие детали // строки или абзацы или еще что то. } А в xaml я хз какой контрол лучше использовать, но это будет некий ItemControl, с нужной тебе панелью и айтемами для отображения страниц. Сами айтемы возможно будут типа RichTextBox.
Комментариев нет:
Отправить комментарий