Файл MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel Orientation="Vertical" Margin="40 20 0 0">
<!-- enter text -->
<TextBox Name="ElementWithText" HorizontalAlignment="Left" Width="300" Height="20">
<TextBox.Text>
<Binding Path="BookName"
UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True"
NotifyOnValidationError="True">
<Binding.ValidationRules>
<local:MyFieldValidation />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<!-- Validation Error -->
<Label Margin="0" Foreground="Red" Content="{Binding Path=(Validation.Errors)[0].ErrorContent, ElementName=ElementWithText}">
</Label>
</StackPanel>
</Window>
Файл MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public string BookName { get; set; }
public MainWindow()
{
InitializeComponent();
// for binding
this.DataContext = this;
}
}
public class MyFieldValidation : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
string text = (string)value;
if (!string.IsNullOrEmpty(text))
{
for (int i = 0; i < text.Length; i++)
{
if (!Char.IsLetter(text[i]))
{
// show error message
return new ValidationResult(false, "Error!, please enter correct book name, should be only letters");
}
}
}
return new ValidationResult(true, null);
}
}
}
Файл MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel Orientation="Vertical" Margin="40 20 0 0">
<!-- enter text -->
<TextBox Name="ElementWithText" HorizontalAlignment="Left" Width="300" Height="20">
<TextBox.Text>
<Binding Path="BookName"
UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True"
NotifyOnValidationError="True">
<Binding.ValidationRules>
<local:MyFieldValidation />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<!-- Validation Error -->
<Label Margin="0" Foreground="Red" Content="{Binding Path=(Validation.Errors)[0].ErrorContent, ElementName=ElementWithText}">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=(Validation.Errors)[0].ErrorContent, ElementName=ElementWithText}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
<!-- enter text -->
<TextBox HorizontalAlignment="Left" Width="300" Height="20">
</TextBox>
</StackPanel>
</Window>