I have been using WPF and its built in validation controls for quiet sometime. I was going through an excellent article in codeproject whose link is given below http://www.codeproject.com/KB/WPF/wpfvalidation.aspx
I am having a requirement from one of our clients which I have not been able to chieve using MVVM in WPF. The problem is as follows :
There is a TextBox which accepts only numbers.
When the user enters any value other than numbers I have to display an error to him. The error should
1. highlight the TextBox, provide a ToolTip
2. display an error in MessageBox
3. revert the TextBox to its previous value
For example when the TextBox is loaded, it might have an initial value say "10 . Then the user enters some wrong value say "aa". Now I have to display a MessageBox saying "Wrong value" and then revert the value back to 10.There are lot of articles and ways to display error in WPF say by using ErrorTemplate and so on.
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Foreground="Orange"
FontSize="12pt">
!!!!
</TextBlock>
<Border BorderBrush="Green" BorderThickness="1">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}">
</Setter>
</Trigger>
</Style.Triggers>
</Style>
But how do I revert the value and display a MessageBox. I know it can be displayed using an event in code-behind file but I dont want to write any logic in my code behind file. I want to achieve this functionality using MVVM A sample illustration will be really helpful!!