Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

Язык программирования C#9 и платформа .NET5

Часть 569 из 642 Информация о книге

Запустите приложение и создайте условие для ошибки. Результат будет подобен тому, что показан на рис. 28.6, и укомплектован всплывающей подсказкой с сообщением об ошибке.

Язык программирования C#9 и платформа .NET5 - _265.png

Определенный выше стиль изменяет внешний вид любого элемента управления

TextBox
, который содержит ошибку. Далее мы создадим специальный шаблон элемента управления с целью обновления свойства
ErrorTemplate
класса
Validation
, чтобы отобразить восклицательный знак красного цвета и установить всплывающие подсказки для восклицательного знака. Шаблон
ErrorTemplate
является декоратором, который располагается поверх элемента управления. Хотя только что созданный стиль обновляет сам элемент управления, шаблон
ErrorTemplate
будет размещаться поверх элемента управления.

Поместите элемент

Setter
непосредственно после закрывающего дескриптора
Style.Triggers
внутри созданного стиля. Вы будете создавать шаблон элемента управления, состоящий из элемента
TextBlock
(для отображения восклицательного знака) и элемента
BorderBrush
, который окружает
TextBox
, содержащий сообщение об ошибке (или несколько сообщений). В языке XAML предусмотрен специальный дескриптор для элемента управления, декорированного с помощью
ErrorTemplate
, под названием
AdornedElementPlaceholder
. Добавляя имя такого элемента управления, можно получить доступ к ошибкам, которые ассоциированы с элементом управления. В рассматриваемом примере вас интересует доступ к свойству
Validation.Errors
с целью получения
ErrorContent
(как делалось в
Style.Trigger
). Вот полная разметка для элемента
Setter
:

<Setter Property="Validation.ErrorTemplate">

  <Setter.Value>

    <ControlTemplate>

      <DockPanel LastChildFill="True">

        <TextBlock Foreground="Red" FontSize="20" Text="!"

          ToolTip="{Binding ElementName=controlWithError,

          Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>

          <Border BorderBrush="Red" BorderThickness="1">

          <AdornedElementPlaceholder Name="controlWithError" />

        </Border>

      </DockPanel>

    </ControlTemplate>

  </Setter.Value>

</Setter>

Запустите приложение и создайте условие для возникновения ошибки. Результат будет подобен представленному на рис. 28.7.

Язык программирования C#9 и платформа .NET5 - _266.png

Итоговые сведения о проверке достоверности

На этом исследование методов проверки достоверности в WPF завершено. Разумеется, с их помощью можно делать намного большее. За дополнительными сведениями обращайтесь в документацию по WPF.

Создание специальных команд

Как и в разделе, посвященном проверке достоверности, можете продолжить работу с тем же проектом или создать новый проект и скопировать в него весь код из предыдущего проекта. Вы создадите новый проект по имени

WpfCommands
. В случае работы с проектом из предыдущего раздела обращайте внимание на пространства имен в примерах кода и корректируйте их по мере необходимости.

В главе 25 объяснялось, что команды являются неотъемлемой частью WPF. Команды могут привязываться к элементам управления WPF (таким как

Button
и
MenuItem
) для обработки пользовательских событий, подобных щелчку. Вместо создания обработчика события напрямую и помещения его кода в файл отделенного кода при возникновении события выполняется метод
Execute()
команды. Метод
CanExecute()
используется для включения или отключения элемента управления на основе специального кода. В дополнение к встроенным командам, которые применялись в главе 25, можно создавать собственные команды, реализуя интерфейс
ICommand
. Когда вместо обработчиков событий используются команды, появляются преимущества инкапсуляции кода приложения, а также автоматического включения и отключения элементов управления с помощью бизнес-логики.

Реализация интерфейса ICommand

Как было показано в главе 25, интерфейс

ICommand
определен следующим образом:

public interface ICommand

{

  event EventHandler CanExecuteChanged;

  bool CanExecute(object parameter);

  void Execute(object parameter);

}

Добавление класса ChangeColorCommand

Обработчики событий для элементов управления

Button
вы замените командами, начав с кнопки Change Color. Создайте в проекте новую папку по имени
Cmds
. Добавьте в нее новый файл класса
ChangeColorCornmand.cs
. Сделайте класс открытым и реализующим интерфейс
ICommand
. Добавьте приведенные ниже операторы
using
(первый может варьироваться в зависимости от того, создавался ли новый проект для данного примера):

using WpfCommands.Models;

using System.Windows.Input;

Код класса должен выглядеть примерно так:

public class ChangeColorCommand : ICommand

{

  public bool CanExecute(object parameter)

  {

    throw new NotImplementedException();

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 4
    • Спецслужбы 4
  • Деловая литература 209
    • Банковское дело 3
    • Деловая литература 2
    • Корпоративная культура 13
    • Личные финансы 21
    • Малый бизнес 2
    • Маркетинг, PR, реклама 47
    • О бизнесе популярно 117
    • Отраслевые издания 2
    • Управление, подбор персонала 17
    • Ценные бумаги, инвестиции 3
    • Экономика 28
  • Детективы и триллеры 2813
    • Боевики 314
    • Дамский детективный роман 22
    • Детективы 424
    • Иронические детективы 185
    • Исторические детективы 417
    • Классические детективы 226
    • Криминальные детективы 159
    • Крутой детектив 120
    • Маньяки 15
    • Медицинский триллер 2
    • Политические детективы 44
    • Полицейские детективы 237
    • Прочие Детективы 830
    • Техно триллер 3
    • Триллеры 1233
    • Шпионские детективы 101
  • Детские 506
    • Детская образовательная литература 13
    • Детская проза 167
    • Детские остросюжетные 53
    • Детские приключения 270
    • Детские стихи 21
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 78
  • Детские книги 542
    • Детская фантастика 199
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 273
  • Документальная литература 816
    • Биографии и мемуары 536
    • Военная документалистика 7
    • Искусство и Дизайн 15
    • Критика 11
    • Научпоп 9
    • Прочая документальная литература 73
    • Публицистика 258
  • Дом и Семья 217
    • Домашние животные 14
    • Здоровье и красота 34
    • Кулинария 33
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 8
    • Сделай сам 2
    • Спорт 10
    • Хобби и ремесла 7
    • Эротика и секс 112
  • Драматургия 112
    • Драма 109
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 8
    • Разное 8
  • Компьютеры и Интернет 15
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 10
  • Любовные романы 26761
    • Исторические любовные романы 958
    • Короткие любовные романы 2707
    • Любовно-фантастические романы 11101
    • Остросюжетные любовные романы 1002
    • Порно 90
    • Прочие любовные романы 57
    • Слеш 417
    • Современные любовные романы 11043
    • Фемслеш 44
    • Эротика 6602
  • Научно-образовательная 378
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 33
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 3
    • Государство и право 1
    • Детская психология 16
    • Зоология 3
    • Иностранные языки 2
    • Культурология 47
    • Литературоведение 20
    • Медицина 35
    • Обществознание 7
    • Педагогика 20
    • Политика 22
    • Прочая научная литература 58
    • Психотерапия и консультирование 52
    • Религиоведение 7
    • Секс и семейная психология 31
    • Технические науки 4
    • Физика 9
    • Философия 35
    • Химия 3
    • Экология 3
    • Юриспруденция 9
    • Языкознание 18
  • Образование 525
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 298
    • Карьера 4
    • Психология 231
  • Поэзия и драматургия 43
    • Басни 2
    • Драматургия 11
    • Лирика 2
    • Поэзия 31
  • Приключения 769
    • Вестерны 14
    • Исторические приключения 425
    • Морские приключения 80
    • Природа и животные 32
    • Прочие приключения 212
    • Путешествия и география 52
  • Проза 2459
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 111
    • Историческая проза 325
    • Классическая проза 137
    • Контркультура 14
    • Магический реализм 97
    • Новелла 14
    • Повесть 24
    • Проза прочее 21
    • Рассказ 73
    • Роман 104
    • Русская классическая проза 73
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 48
    • Современная проза 1888
    • Эпистолярная проза 2
    • Эпопея 5
    • Эссе, очерк, этюд, набросок 3
  • Прочее 1525
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 12
    • Кино 13
    • Музыка 11
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1478
  • Религия и духовность 371
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 4
    • Религия 24
    • Самосовершенствование 143
    • Хиромантия 1
    • Эзотерика 214
    • Язычество 1
  • Справочная литература 42
    • Прочая справочная литература 3
    • Путеводители 10
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 157
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 35
    • Прочая старинная литература 117
  • Техника 2
    • Автомобили и ПДД 1
    • Архитектура 1
  • Фантастика и фентези 28871
    • Альтернативная история 4248
    • Боевая фантастика 5415
    • Героическая фантастика 1500
    • Городское фэнтези 2328
    • Готический роман 14
    • Детективная фантастика 759
    • Ироническая фантастика 102
    • Ироническое фэнтези 84
    • Историческое фэнтези 535
    • Киберпанк 322
    • Космическая фантастика 1832
    • Космоопера 56
    • ЛитРПГ 1341
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 528
    • Научная фантастика 946
    • Попаданцы 9584
    • Постапокалипсис 924
    • Сказочная фантастика 26
    • Социально-философская фантастика 557
    • Стимпанк 152
    • Технофэнтези 148
    • Ужасы 103
    • Ужасы и мистика 835
    • Фантастика 254
    • Фантастика: прочее 233
    • Фэнтези 11603
    • Эпическая фантастика 236
    • Юмористическая фантастика 1080
    • Юмористическое фэнтези 1699
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 195
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 67
    • Сатира 3
    • Юмористическая проза 124
    • Юмористические стихи 5
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен