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
- highlight the TextBox, provide a ToolTip
- display an error in MessageBox
- 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!!