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="2">
<TextBlock Text="Validation by ValidationRule" Margin="5,5"/>
<TextBox Height="30" Width="300" Validation.ErrorTemplate="{StaticResource errorTemplate}">
<TextBox.Text>
<Binding Path="MainWindowModel.ValidationByValidationRule" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<valid:Validator/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</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 ValidationRule
private string _validationByValidationRule = string.Empty;
public string ValidationByValidationRule
{
get { return _validationByValidationRule; }
set
{
SetProperty(ref _validationByValidationRule, value);
}
}
#endregion
}
class
Validator :
ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (string.IsNullOrEmpty(value?.ToString()))
return new ValidationResult(false, "Validation By ValidationRule should not empty");
return new ValidationResult(true, null);
}
}
Comments
Post a Comment