mopuru surya

mopuru surya

  • 1.8k
  • 6
  • 142

Validation of texbox wpf mvvm

Sep 13 2019 12:36 PM
public class ProductModel : NotifyPropertyChangeBase , IDataErrorInfo2: {3: public bool IsValidating = false;4: 5: public Dictionary Errors = new Dictionary();6: 7: ...properties...8: 9: public bool IsValid()10: {11: IsValidating = true;12: try13: {14: NotifyPropertyChanged(() => Name);15: NotifyPropertyChanged(() => Price);16: NotifyPropertyChanged(() => Amount);17: }18: finally19: {20: IsValidating = false;21: }22: return (Errors.Count() == 0);23: }24: 25: public string Error26: {27: get { throw new NotImplementedException(); }28: }29: 30: public string this[string columnName]31: {32: get33: {34: string result = string.Empty;35: if (!IsValidating) return result;36: Errors.Remove(columnName);37: switch (columnName)38: {39: case "Name": if (string.IsNullOrEmpty(Name)) result = "Name is required!"; break;40: case "Price": if ((Price < 10) || (Price > 1000)) result = "Price must be between 10 and 1000"; break;41: case "Amount": if ((Amount < 1) || (Amount > 100)) result = "Amount must be between 1 and 100"; break;42: };43: if (result != string.Empty) Errors.Add(columnName, result);44: return result;45: }46: }47: 48: public ProductModel()49: {50: }51: } private void SaveExecute()2: {3: Model.IsValid();4: }UserControl x:Class="WPFValidationApplication.Views.ProductForm"2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"5: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"6: xmlns:my="clr-namespace:WPFValidationApplication.Utils"7: d:DesignHeight="300"8: d:DesignWidth="448"9: mc:Ignorable="d">10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 81: public class ProductModel : NotifyPropertyChangeBase2: {3: private String name;4: public String Name5: {6: get7: {8: return name;9: }10: set11: {12: name = value;13: NotifyPropertyChanged(() => Name);14: }15: }16: 17: private decimal price;18: public decimal Price19: {20: get21: {22: return price;23: }24: set25: {26: price = value;27: NotifyPropertyChanged(() => Price);28: }29: }30: 31: private int amount;32: public int Amount33: {34: get35: {36: return amount;37: }38: set39: {40: amount = value;41: NotifyPropertyChanged(() => Amount);42: }43: } 44: }public partial class ProductForm : UserControl2: {3: public ProductForm()4: {5: InitializeComponent();6: this.DataContext = new ProductFormViewModel();7: }8: }public class ProductFormViewModel : NotifyPropertyChangeBase2: {3: public ProductModel Model { get; set; }4: 5: public ICommand SaveCommand { get; set; }6: 7: public ProductFormViewModel()8: {9: Model = new ProductModel();10: SaveCommand = new DelegateCommand(SaveExecute);11: }12: 13: private void SaveExecute()14: {15: //dummy16: } 17: }public class ProductModel : NotifyPropertyChangeBase2: {3: private String name;4: public String Name5: {6: get7: {8: return name;9: }10: set11: {12: name = value;13: NotifyPropertyChanged(() => Name);14: }15: }16: 17: private decimal price;18: public decimal Price19: {20: get21: {22: return price;23: }24: set25: {26: price = value;27: NotifyPropertyChanged(() => Price);28: }29: }30: 31: private int amount;32: public int Amount33: {34: get35: {36: return amount;37: }38: set39: {40: amount = value;41: NotifyPropertyChanged(() => Amount);42: }43: } 44: }My form doesnot show up any red border or error message on button click

Answers (1)