Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

TextBox with default ErrorTemplate

<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