I'm attempting to validate a textbox for numeric entry, using this and this as guides. Unfortunately I cannot get the validation to work correctly.
xaml:
xmlns:v="clr-namespace:DentalClinic_EF.DentalClinic_Validation"
...<Window.Resources><ControlTemplate x:Key="validationTemplate" ><DockPanel LastChildFill="True"><TextBlock DockPanel.Dock="Right"
Foreground="DarkRed"
Margin="5, 2, 2, 2"
Text="{Binding ElementName=Adorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"></TextBlock><Border BorderBrush="Red" BorderThickness="1"><AdornedElementPlaceholder Name="Adorner" /></Border></DockPanel></ControlTemplate>
...<Label Content="Medical Record #:" HorizontalAlignment="Left" Margin="27,67,0,0" VerticalAlignment="Top"/><TextBox Name="txtMedicalRecord" VerticalAlignment="Top" Width="120" Margin="136,67,101,0"
Validation.ErrorTemplate="{StaticResource validationTemplate}" ><TextBox.Text><Binding Path="MedicalRecordNumber" UpdateSourceTrigger="PropertyChanged"><Binding.ValidationRules><v:MedicalRecordValidationRule ValidationStep="RawProposedValue" /></Binding.ValidationRules></Binding></TextBox.Text></TextBox>Validation code:
Namespace DentalClinic_Validation
Public Class MedicalRecordValidationRule
Inherits ValidationRule
Public Overloads Overrides Function Validate(value As Object, cultureInfo As Globalization.CultureInfo) As ValidationResult
Dim i As Integer
If Integer.TryParse(value.ToString, i) Then
Return New ValidationResult(True, Nothing)
End If
Return New ValidationResult(False, "Medical Record # must be numeric")
End Function
End Class
End NamespaceClass definition:
Partial Public Class tblPatientDemographic
Inherits PropertyChangedBase
...
Public Property MedicalRecordNumber As Nullable(Of Integer)
Get
Return _MedicalRecordNumber
End Get
Set(value As Nullable(Of Integer))
_MedicalRecordNumber = value
RaisePropertyChanged("MedicalRecordNumber")
End Set
End Property
Private _MedicalRecordNumber As Nullable(Of Integer)Data-entry form:
If I type "aaa" into the above, I expect it to display the error message with a red box around the textbox.
A breakpoint in the validation code block shows that the code is never entered. So I'm thinking it's a problem with the xaml.
Any help is appreciated.
Thanks.