
- •Лабораторная работа: Текст wpf Введение
- •Упражнение 1. Простые текстовые элементы
- •Создание заготовки решения
- •Элемент TextBlock с анимацией
- •Элемент TextBlock с текстурой символов
- •Автоматический перенос слов в TextBlock
- •Использование дополнительных шрифтов
- •Элементы TextBox и PasswordBox
- •Упражнение 2. Поддержка документов нефиксированного формата
- •Использование FlowDocument с контейнером по умолчанию
- •Использование контейнера RichTextBox
- •Использование контейнера FlowDocumentScrollViewer
- •Использование контейнера FlowDocumentPageViewer
- •Пример из msdn
- •Загрузка FlowDocument из xaml-файла
- •Упражнение 3. Работа в wpf с html-документами
- •Просмотр html-документов в WebBrowser
- •Отображение html-текста в WebBrowser из файла
- •Отображение html-текста в WebBrowser из потока
- •Еще один способ загрузки html-документа из потока
- •Упражнение 4. Преобразование html- в xaml-документ на лету
- •Упражнение 5. Преобразование html- в xaml-документ с записью в файл
- •Пражнение 6. Выборка текста из текстового файла с форматированием на лету
Использование контейнера RichTextBox
Оборачивание элемента FlowDocument в контейнер RichTextBox отключает панель навигации по тексту.
В контейнер <TabControl> добавьте вкладку <TabItem Header="Text2" Selector.IsSelected="True"> и заполните ее следующим кодом
<TabItem Header="Text2" Selector.IsSelected="True">
<RichTextBox IsReadOnly="True" FontSize="21" >
<FlowDocument Background="White">
<Paragraph TextAlignment="Center" FontWeight="Bold">
Потоковый
<Span Foreground="Red">документ</Span>
<Italic>обернут в RichTextBox</Italic>
</Paragraph>
<List MarkerStyle="LowerLatin" FontFamily="Arial" FontSize="14">
<ListItem>
<Paragraph>Маркер LowerLatin</Paragraph>
</ListItem>
<ListItem>
<Paragraph>Второй элемент ListItem</Paragraph>
</ListItem>
</List>
<List MarkerStyle="Box" FontFamily="Arial" FontSize="14">
<ListItem>
<Paragraph>Маркер Box</Paragraph>
</ListItem>
<ListItem>
<Paragraph>Второй элемент ListItem</Paragraph>
</ListItem>
</List>
<Paragraph FontSize="12">В родительском контейнере RichTextBox
<Bold>
<Span FontFamily="Comic Sans MS" FontSize="12" Foreground="Blue">
включен режим IsReadOnly="True"
</Span>
</Bold> и не появляется полоса прокрутки при длинном тексте
</Paragraph>
</FlowDocument>
</RichTextBox>
</TabItem>
Присоединенный к дескриптору вкладки атрибут Selector.IsSelected="True" позиционирует ее при открытии окна.
Запустите приложение, поизменяйте размер окна и разберитесь с кодом
Результат будет таким
Использование контейнера FlowDocumentScrollViewer
Оборачивание элемента FlowDocument в контейнер FlowDocumentScrollViewer по умолчанию отключает панель инструментов документа и добавляет вертикальную панель прокрутки, которую можно настраивать. Вертикальная полоса прокрутки включается с помощью присоединенного свойства. Панель инструментов включается свойством IsToolBarVisible="True" (по умолчанию IsToolBarVisible="False" ).
FlowDocument - единственный допустимый дочерний элемент объекта FlowDocumentScrollViewer. В FlowDocumentScrollViewer может быть размещен не более чем один элемент FlowDocument.
В контейнер <TabControl> добавьте вкладку <TabItem Header="Text3"> и заполните ее следующим кодом
<TabItem Header="Text3">
<FlowDocumentScrollViewer
ScrollViewer.VerticalScrollBarVisibility="Auto"
IsToolBarVisible="False"
>
<FlowDocument Background="White" FontSize="14">
<Paragraph TextAlignment="Center" FontWeight="Bold">
FlowDocument
<Italic>помещен в</Italic>
<Span Foreground="Red">FlowDocumentScrollViewer</Span>
</Paragraph>
<List MarkerStyle="None" FontFamily="Arial">
<ListItem>
<Paragraph>Буря мглою небо кроет</Paragraph>
</ListItem>
<ListItem>
<Paragraph>Вихри снежные крутя.</Paragraph>
</ListItem>
<ListItem>
<Paragraph>То как зверь она завоет</Paragraph>
</ListItem>
<ListItem>
<Paragraph>То заплачет как дитя.</Paragraph>
</ListItem>
</List>
<Paragraph TextAlignment="Left" FontSize="12">Текст
нефикированного формата FlowDocument нужно заключать в параграфы
(абзацы), внутри которых можно применять стилевые элементы.
</Paragraph>
<Paragraph>
<Bold>
<Span FontFamily="Comic Sans MS" FontSize="12" Foreground="Blue">
Буря мглою небо кроет вихри снежные крутя.
<LineBreak />
</Span>
</Bold>
То как зверь она завоет, то заплачет как дитя.
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</TabItem>
Присоединенный к дескриптору <FlowDocumentScrollViewer> атрибут ScrollViewer.VerticalScrollBarVisibility="Auto" обеспечивает автоматическое появление полосы прокрутки, если текст не помещается на экране. Атрибуты, установленные в контейнере <FlowDocument>, действуют по умолчанию на все дочерние элементы, если аналогичные атрибуты в них не переопределены. В списках маркеры элементов можно менять или вообще отключать.
Запустите приложение, поизменяйте размер окна и разберитесь с кодом
Результат будет таким