Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WPF-практика 3 Текст.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1.59 Mб
Скачать

Упражнение 2. Поддержка документов нефиксированного формата

Классы-упаковки содержимого нефиксированного формата

  • FlowDocumentReader

  • RichTextBox

  • FlowDocumentScrollViewer

  • FlowDocumentPageViewer

имеют дочерний элемент FlowDocument. В свою очередь, FlowDocument задает строгую модель содержимого для своего дочернего содержимого. Дочерние элементы верхнего уровня, содержащиеся в FlowDocument, должны быть производными от Block и называются блочными. Допустимыми дочерними элементами верхнего уровня в FlowDocument являются следующие блоки:

Блок

Описание

Paragraph

Содержит текст, возможно форматированный.

List

Содержит списки разного типа (нумерованный, маркированный и т. д.).

Table

Содержит таблицы, похожие на таблицы Microsoft Word или HTML.

BlockUIContainer

Содержит различные элементы пользовательского интерфейса, становящиеся частью размещения.

Section

Содержит группу прочих блоков. Разделы удобны для применения общих атрибутов к группам блоков, например, одни и те же атрибуты шрифта для нескольких абзацев.

Внутри блоков дополнительное форматирование текста обеспечивается элементами, которые называются внутристрочными элементами. К ним относятся

  • элемент Bold

  • элемент Italic

  • элемент LineBreak

  • элемент List

  • элемент ListItem

  • элемент Paragraph

  • элемент Run

  • элемент Section

  • элемент Span

  • элемент Underline

Внутристрочные элементы могут быть вложенными друг в друга внутри блока или вместе с родительским блоком вложены в другой блок.

Некоторые элементы могут дополнительно настраиваться, например, такими атрибутами, как

  • BreakPageBefore=True" - начать с новой страницы

  • FontSize="24" - размер шрифта

  • Typography.Variants="Superscript" - надстрочный

  • Typography.Variants="Subscript" - подстрочный

  • TextIndent="25" - отступ первой строки блока

  • TextIndent="-15" - выступ первой строки блока

  • Margin="20,0,0,0" - отступ блока слева

  • TextAlignment="Center" - текст посредине контейнера рендеринга (представления)

  • MarkerStyle="None" - тип маркера в элементе List

Использование FlowDocument с контейнером по умолчанию

Создание экземпляра класса FlowDocument автоматически запускает родительский контейнер FlowDocumentReader, который размещает содержимое и имеет стандартную панель управления документом.

  • Добавьте к решению новый проект WpfText2 типа WPF Application и назначьте его стартовым

  • В декларативный раздел XAML добавьте контейнер <TabControl> с вкладкой <TabItem Header="Text1">

  • Заполните файл Window1.xaml следующим кодом

<Window x:Class="WpfText2.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Background="LightGray"

Title="Window1" MinHeight="300" MinWidth="300" Height="300" Width="300">

<TabControl>

<TabItem Header="Text1">

<FlowDocument Background="White">

<Paragraph TextAlignment="Center" FontWeight="Bold">

Потоковый

<Span Foreground="Red"> документ</Span>

<Italic>с разбивкой на страницы</Italic>

</Paragraph>

<List MarkerStyle="Decimal" FontFamily="Arial">

<ListItem>

<Paragraph>Первый элемент ListItem</Paragraph>

</ListItem>

<ListItem>

<Paragraph>Второй элемент ListItem</Paragraph>

</ListItem>

<ListItem>

<Paragraph>Третий элемент ListItem</Paragraph>

</ListItem>

</List>

<Paragraph FontSize="12">Класс FlowDocument поддерживает списки, определения

<Bold>

<Span FontFamily="Comic Sans MS" FontSize="12" Foreground="Blue">

семейств шрифтов, цвет

</Span>

</Bold> размеры и стили.

</Paragraph>

</FlowDocument>

</TabItem>

</TabControl>

</Window>

  • Запустите приложение, поизменяйте размер окна и разберитесь с кодом

Результат будет таким