Validation By IDataErrorInfo in Wpf using MVVM

<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="3">
            <TextBlock Text="Validation by IDataErrorInfo  " Margin="5,5"/>
            <TextBox Text="{Binding MainWindowModel.ValidationByIDataErrorInfo,UpdateSourceTrigger=PropertyChanged,
                        ValidatesOnDataErrors=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, IDataErrorInfo
    {
        #region Validation By IDataErrorInfo

        private string _validationByIDataErrorInfo = string.Empty;

        public string ValidationByIDataErrorInfo
        {
            get { return _validationByIDataErrorInfo; }
            set
            {
                SetProperty(ref _validationByIDataErrorInfo, value);
            }
        }
        #endregion


        public string Error { get; }

        public string this[string columnName]
        {
            get
            {
                if (columnName == "ValidationByIDataErrorInfo")
                    return "Validation By IDataErrorInfo should not empty";
                return string.Empty;
            }
        }
    }

Comments

Popular posts from this blog

Pagination of DataGrid in WPF using MVVM

Connect SQL Server Database to WPF Application and Perform CRUD Operations

Filter DataGrid and ListView in wpf using ICollectionView