public class NewViewModel:ObservableObject,INotifyDataErrorInfo { private readonly Dictionary<string, List<string>> _propertyErrors = new Dictionary<string, List<string>>(); public bool HasErrors => _propertyErrors.Any(); public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged; public IEnumerable GetErrors(string propertyName) { return _propertyErrors.GetValueOrDefault(propertyName, null); } private void AddError(string propertyName, string errorMessage) { if (!_propertyErrors.ContainsKey(propertyName)) { _propertyErrors.Add(propertyName, new List<string>()); } _propertyErrors[propertyName].Add(errorMessage); OnErrorsChanged(propertyName); } private void ClearErrors(string propertyName) { if (_propertyErrors.Remove(propertyName)) { OnErrorsChanged(propertyName); } } private void OnErrorsChanged(string propertyName) { ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(propertyName)); } private ObservableCollection<Products> listProducts; public ObservableCollection<Products> ListProducts { get { return listProducts; } set { listProducts = value; } } private Products selectedProduct; public Products SelectedProduct { get { return selectedProduct; } set { selectedProduct = value; OnPropertyChanged(nameof(SelectedProduct)); } } private readonly ProductsService productsService; private void All() { ListProducts.Clear(); IEnumerable<Products> list = productsService.GetAll(); foreach (var item in list) { ListProducts.Add(item); } } public NewViewModel() { productsService = new ProductsService(); ListProducts = new ObservableCollection<Products>(); SelectedProduct = new Products(); All(); } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)