Использование контейнера FlowDocumentPageViewer
Использование контейнера FlowDocumentPageViewer для FlowDocument позволяет представлять документ как одну страницу без средства поиска текста и разбивки его на страницы и колонки, но оставляет панель изменения масштаба и навигации. Однако в самом FlowDocument есть свойства, позволяющие настраивать обычный и многоколоночный текст. Вот некоторые из них
- TextAlignment="Justify" - выравнивание текста по обеим границам колонок (включен по умолчанию)
- IsHyphenationEnabled="True" - включение расстановки переносов (при наличии словарей)
- IsOptimalParagraphEnabled="True" - включение оптимального абзаца, выравнивающего пробелы между словами за счет разрежения символов в самих словах при режиме TextAlignment="Justify"
- ColumnGap="25" - ширина между колонками в логических пикселах
- ColumnWidth="150" - предпочтительная (минимальная) ширина колонки
- IsColumnWidthFlexible="False" - это значение флага явно запрещает дозаполнять окно просмотра и устанавливает жесткую ширину колонки
- ColumnRuleWidth="5" - ширина вертикальных линеек, разделяющих колонки текста
- ColumnRuleBrush="Red" - цвет линеек
- В контейнер <TabControl> добавьте вкладку <TabItem Header="Text4"> и заполните ее следующим кодом
<TabItem Header="Text4"> <FlowDocumentPageViewer> <FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="White" ColumnWidth="150" ColumnRuleWidth="2" ColumnRuleBrush="Red" ColumnGap="30" IsHyphenationEnabled="True" IsOptimalParagraphEnabled="True" > <Paragraph FontSize="18" FontWeight="Bold" TextAlignment="Center"> Примеры форматирования FlowDocument & FlowDocumentPageViewer </Paragraph> <Paragraph> Это абзац с атрибутами по умолчанию. </Paragraph> <Paragraph> Это еще один абзац с атрибутами по умолчанию. </Paragraph> <Paragraph FontSize="18">Абзац с FontSize="18"</Paragraph> <Paragraph FontSize="15">Абзац с FontSize="15"</Paragraph> <Paragraph FontSize="15">Список <List FontFamily="Arial"></Paragraph> <List FontFamily="Arial"> <ListItem> <Paragraph>ListItem 1</Paragraph> </ListItem> <ListItem> <Paragraph>ListItem 2</Paragraph> </ListItem> <ListItem> <Paragraph>ListItem 3</Paragraph> </ListItem> <ListItem> <Paragraph>ListItem 4</Paragraph> </ListItem> <ListItem> <Paragraph>ListItem 5</Paragraph> </ListItem> </List> <Paragraph> <Bold>Это элемент <Bold> внутри абзаца <Paragraph></Bold> </Paragraph> <Paragraph> <Underline>Это элемент Underline внутри абзаца</Underline> </Paragraph> <Paragraph> <Bold> <Underline>Подчеркнутый внутри полужирного</Underline> </Bold> </Paragraph> <Paragraph> <Italic>Это элемент <Italic></Italic> </Paragraph> <Paragraph> <Span>Элемент Span с настройками по умолчанию</Span> </Paragraph> <Paragraph> <Run>Элемент Run с настройками по умолчанию</Run> </Paragraph> <Paragraph FontSize="15">Subscript, Superscript</Paragraph> <Paragraph> <Run Typography.Variants="Superscript">This text is Superscripted.</Run> This text isn't. </Paragraph> <Paragraph> <Run Typography.Variants="Subscript">This text is Subscripted.</Run> This text isn't. </Paragraph> <Paragraph TextIndent="-25" Margin="25,0"> If a font does not support a particular form (such as Superscript) a default font form will be displayed. </Paragraph> <Paragraph FontSize="15">Blocks, breaks, paragraph</Paragraph> <Section> <Paragraph>A block section of text</Paragraph> </Section> <Section> <Paragraph>Another block section of text</Paragraph> </Section> <Paragraph> <LineBreak/> </Paragraph> <Section> <Paragraph>... and another section, preceded by a LineBreak</Paragraph> </Section> <Section BreakPageBefore="True"/> <Section> <Paragraph>... and another section, preceded by a PageBreak</Paragraph> </Section> <Paragraph>Finally, a paragraph. Note the break between this paragraph ...</Paragraph> <Paragraph TextIndent="25">... and this paragraph, and also the left indention.</Paragraph> </FlowDocument> </FlowDocumentPageViewer> </TabItem> Здесь мы применили основной набор элементов форматирования текста 'на лету'. Обратите внимание, что в разметке угловые скобки кодируются как в HTML. Другие управляющие символы разметки кодируются аналогично, например, ' & ' кодируется как ' & '. Знак подчеркивания ' _ ' считается служебным для выделения горячих клавиш в меню, поэтому в ином употреблении должен экранироваться таким же знаком подчеркивания.
Параметры настройки FlowDocument разбивают текст на колонки, задают ширину колонок, расстояние между ними и вертикальные линейки. Определение пространств имен в дескрипторе FlowDocument здесь роли не играет, но должно обязательно присутствовать для успокоения редактора, если контейнер FlowDocument редактируется оболочкой автономно как внешний файл документа.
- Запустите приложение, поизменяйте размер окна и разберитесь с кодом
Результат будет таким
увеличить изображение
Обратите внимание, что в длинных словах кириллический текст объект FlowDocument не переносит, а латиницу - переносит.
- Проверьте действие атрибута IsOptimalParagraphEnabled="True", включающего оптимальный параграф
Дата добавления: 2015-04-15; просмотров: 1197;