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">
<Window.Resources>
<ControlTemplate x:Key="
errorTemplate">
<StackPanel Orientation="Horizontal">
<AdornedElementPlaceholder x:Name="ErrorHolder" >
<Border BorderBrush="red" BorderThickness="1" />
</AdornedElementPlaceholder>
<TextBlock Text="{Binding [0].ErrorContent}" VerticalAlignment="Center" HorizontalAlignment="Right" Foreground="Red"/>
</StackPanel>
</ControlTemplate>
</Window.Resources>
<Grid VerticalAlignment="Center" HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal" Grid.Row="1">
<TextBlock Text="Validation by Annotation" Margin="5,5"/>
<TextBox Text="{Binding MainWindowModel.ValidationByAnnotation,UpdateSourceTrigger=PropertyChanged,
ValidatesOnExceptions=True}" Validation.ErrorTemplate="{StaticResource errorTemplate}" Height="30" Width="300"/>
</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 Annotation
private string _validationByAnnotation;
[Required(ErrorMessage = "Validation By Annotation should not empty")]
public string ValidationByAnnotation
{
get { return _validationByAnnotation; }
set
{
Validate(value, "ValidationByAnnotation");
SetProperty(ref _validationByAnnotation, value);
}
}
private void Validate<T>(T value, string propertyName)
{
Validator.ValidateProperty(value, new ValidationContext(this, null, null)
{
MemberName = propertyName
});
}
#endregion
}
Comments
Post a Comment