Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Запустите приложение и создайте условие для ошибки. Результат будет подобен тому, что показан на рис. 28.6, и укомплектован всплывающей подсказкой с сообщением об ошибке.

Определенный выше стиль изменяет внешний вид любого элемента управления
TextBox
ErrorTemplate
Validation
ErrorTemplate
ErrorTemplate
Поместите элемент
Setter
Style.Triggers
TextBlock
BorderBrush
TextBox
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.

Итоговые сведения о проверке достоверности
На этом исследование методов проверки достоверности в WPF завершено. Разумеется, с их помощью можно делать намного большее. За дополнительными сведениями обращайтесь в документацию по WPF.
Создание специальных команд
Как и в разделе, посвященном проверке достоверности, можете продолжить работу с тем же проектом или создать новый проект и скопировать в него весь код из предыдущего проекта. Вы создадите новый проект по имени
WpfCommands
В главе 25 объяснялось, что команды являются неотъемлемой частью WPF. Команды могут привязываться к элементам управления WPF (таким как
Button
MenuItem
Execute()
CanExecute()
ICommand
Реализация интерфейса ICommand
Как было показано в главе 25, интерфейс
ICommand
public interface ICommand
{
event EventHandler CanExecuteChanged;
bool CanExecute(object parameter);
void Execute(object parameter);
}
Добавление класса ChangeColorCommand
Обработчики событий для элементов управления
Button
Cmds
ChangeColorCornmand.cs
ICommand
using
using WpfCommands.Models;
using System.Windows.Input;
Код класса должен выглядеть примерно так:
public class ChangeColorCommand : ICommand
{
public bool CanExecute(object parameter)
{
throw new NotImplementedException();