Validation By Exception (Display Error message by ToolTip) in Wpf using MVVM
View
<Window x:Class="WpfPrismTutorial.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfPrismTutorial"
mc:Ignorable="d"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:prism="http://prismlibrary.com/"
xmlns:valid="clr-namespace:WpfPrismTutorial.Validations"
Title="MainWindow" Height="450" Width="800">
<Grid VerticalAlignment="Center" HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Validation by Exception" Margin="5,5"/>
<TextBox Text="{Binding MainWindowModel.ValidationByException,UpdateSourceTrigger=PropertyChanged,
ValidatesOnExceptions=True}" x:Name="txt" Height="30" Width="300">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="Invalid input"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</StackPanel>
</Grid>
</Window>
Model
public class MainWindowModel : BindableBase
{
#region Validation By Exception
private string _validationByException = string.Empty;
public string ValidationByException
{
get { return _validationByException; }
set
{
if (string.IsNullOrEmpty(value))
throw new Exception("Validation By Exception should not empty");
SetProperty(ref _validationByException, value);
}
}
#endregion
}
<Window x:Class="WpfPrismTutorial.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfPrismTutorial"
mc:Ignorable="d"
prism:ViewModelLocator.AutoWireViewModel="True"
xmlns:prism="http://prismlibrary.com/"
xmlns:valid="clr-namespace:WpfPrismTutorial.Validations"
Title="MainWindow" Height="450" Width="800">
<Grid VerticalAlignment="Center" HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Validation by Exception" Margin="5,5"/>
<TextBox Text="{Binding MainWindowModel.ValidationByException,UpdateSourceTrigger=PropertyChanged,
ValidatesOnExceptions=True}" x:Name="txt" Height="30" Width="300">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="Invalid input"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</StackPanel>
</Grid>
</Window>
ViewModel
public class MainWindowViewModel : BindableBase
{
private MainWindowModel mainWindowModel = new MainWindowModel();
public MainWindowModel MainWindowModel
{
get { return mainWindowModel; }
set { SetProperty(ref mainWindowModel, value); }
}
}
Model
public class MainWindowModel : BindableBase
{
#region Validation By Exception
private string _validationByException = string.Empty;
public string ValidationByException
{
get { return _validationByException; }
set
{
if (string.IsNullOrEmpty(value))
throw new Exception("Validation By Exception should not empty");
SetProperty(ref _validationByException, value);
}
}
#endregion
}
Comments
Post a Comment