TextBox with default ErrorTemplate : ValidationRule « Windows Presentation Foundation « VB.Net Tutorial






<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:c="clr-namespace:WpfApplication1"
  x:Class="WpfApplication1.Window1"
  Title="Binding Validation Sample"
  SizeToContent="WidthAndHeight"
  ResizeMode="NoResize">
    <Window.Resources>
        <c:MyDataSource x:Key="ods"/>

    </Window.Resources>
    <StackPanel>
        <TextBox Name="textBox2" Width="50" FontSize="15">
            <TextBox.Text>
                <Binding Path="Age2" Source="{StaticResource ods}" UpdateSourceTrigger="PropertyChanged" >
                    <Binding.ValidationRules>
                        <c:AgeRangeRule Min="21" Max="30"/>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>

    </StackPanel>
</Window>

//File:Window.xaml.vb
Imports System
Imports System.ComponentModel
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Navigation
Imports System.Windows.Shapes
Imports System.Windows.Data
Imports System.Globalization
Imports System.Collections.ObjectModel

Namespace WpfApplication1
  Public Partial Class Window1
    Inherits Window
    Public Sub New()
      InitializeComponent()
    End Sub
  End Class
  Public Class AgeRangeRule
    Inherits ValidationRule
    Private _min As Integer
    Private _max As Integer

    Public Sub New()
    End Sub

    Public Property Min() As Integer
      Get
        Return _min
      End Get
      Set
        _min = value
      End Set
    End Property

    Public Property Max() As Integer
      Get
        Return _max
      End Get
      Set
        _max = value
      End Set
    End Property

    Public Overrides Function Validate(value As Object, cultureInfo As CultureInfo) As ValidationResult
      Dim age As Integer = 0

      Try
        If DirectCast(value, String).Length > 0 Then
          age = Int32.Parse(DirectCast(value, [String]))
        End If
      Catch e As Exception
        Return New ValidationResult(False, "Illegal characters or " & e.Message)
      End Try

      If (age < Min) OrElse (age > Max) Then
        Return New ValidationResult(False, "Please enter an age in the range: " & Min & " - " & Max & ".")
      Else
        Return New ValidationResult(True, Nothing)
      End If
    End Function
  End Class

  Public Class MyDataSource
    Private _age As Integer
    Private _age2 As Integer
    Private _age3 As Integer

    Public Sub New()
      Age = 0
      Age2 = 0
    End Sub

    Public Property Age() As Integer
      Get
        Return _age
      End Get
      Set
        _age = value
      End Set
    End Property
    Public Property Age2() As Integer
      Get
        Return _age2
      End Get
      Set
        _age2 = value
      End Set
    End Property

    Public Property Age3() As Integer
      Get
        Return _age3
      End Get
      Set
        _age3 = value
      End Set
    End Property
  End Class
End Namespace
WPF Text Box With Default Error Template








16.130.ValidationRule
16.130.1.TextBox with default ErrorTemplateTextBox with default ErrorTemplate
16.130.2.Specify Validation Rules for a BindingSpecify Validation Rules for a Binding