- •Лабораторная работа: Текст 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. Выборка текста из текстового файла с форматированием на лету
Использование дополнительных шрифтов
Иногда нет уверенности в том, что на компьютере пользователя есть нужные шрифты, с использованием которых программист разрабатывает интерфейс. В таком случае шрифты можно поставлять вместе с приложением.
Перейдите в раздел "Панель управления", откройте папку " Шрифты " и перетащите мышью шрифт, например, "Monotype Corsiva" в какую-нибудь папку (файл шрифта уже есть в прилагаемом каталоге Source )
В панели Solution Explorer создайте в корне проекта папку Fonts, выделите ее и добавьте командой Project/Add Existing Item файл шрифта MTCORSVA.TTF
Добавьте в файл Window1.xaml новую вкладку со следующей разметкой
<!--Вкладка TextBlock4-->
<!-- Элемент TextBlock с дополнительным шрифтом -->
<TabItem Header="TextBlock4">
<Grid Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock
FontFamily="Fonts/MTCORSVA.TTF#Monotype Corsiva"
FontSize="20"
TextWrapping="Wrap"
TextAlignment="Justify"
Margin="10"
ToolTip="Элемент TextBlock с дополнительным шрифтом">
Шрифт для этого текста подключен явно и поставляется
вместе с приложением на тот случай, если у бедного
пользователя компьютер окажется еще беднее.
</TextBlock>
<TextBlock Grid.Row="1" Margin="10" TextWrapping="Wrap">
В этом блоке текста используется шрифт по умолчанию и
нет всплывающей подсказки ToolTip, а в верхнем блоке есть
</TextBlock>
</Grid>
</TabItem>
Запустите приложение - должно получиться следующее
Изучите приведенный код
Элементы TextBox и PasswordBox
Добавьте к проекту следующую вкладку со скриптовым кодом
<!--TextBox и PasswordBox-->
<TabItem Header="TextBox" Selector.IsSelected="True">
<StackPanel VerticalAlignment="Center" Margin="10">
<TextBlock HorizontalAlignment="Center">
<Run FontSize="14" FontWeight="Bold">
Элементы PasswordBox и TextBox
</Run>
</TextBlock>
<Grid Height="20" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Поле PasswordBox: " VerticalAlignment="Center" />
<PasswordBox Grid.Column="1" Name="passwordBox" />
</Grid>
<Grid Height="20" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Поле TextBox: " VerticalAlignment="Center" />
<TextBox Grid.Column="1" Name="textBox"></TextBox>
</Grid>
<Grid Height="20" />
<Grid HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="5" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Показать" Click="Button_Click" />
<ToggleButton Grid.Column="2" Name="toggleButton" Content="EnabledPassword"
Checked="toggleButton_Checked" Unchecked="toggleButton_Checked"/>
</Grid>
</StackPanel>
</TabItem>
Выделенную в разметке кнопок регистрацию обработчиков наберите вручную
Добавьте в кодовую часть следующие обработчики
private void Button_Click(object sender, RoutedEventArgs e)
{
textBox.Text = passwordBox.Password;
}
bool flagState = true;
Brush color;
private void toggleButton_Checked(object sender, RoutedEventArgs e)
{
// Сохраняем первоначальный цвет кнопки
if (flagState)
{
color = toggleButton.Background;
flagState = false;
}
if (toggleButton.IsChecked == true)
{
passwordBox.IsEnabled = false;
toggleButton.Background = Brushes.Red;
}
else
{
passwordBox.IsEnabled = true;
toggleButton.Background = color;
}
}
Запустите приложение, поизменяйте размер окна и разберитесь с кодом
Результат будет таким
