//validation module public string this[string parameter] { get { string error = null; switch (parameter) { case "Username": Regex regex = new Regex(regexUsername); Match match = regex.Match(Username); if (string.IsNullOrWhiteSpace(Username)) { error = "Username is required."; IsValidUsername = false; } else if (!match.Success) { error = "Username must be valid username format and contains only alphabetic symbols and numbers.\n" + "For example 'Cyberprank2020'"; IsValidUsername = false; } else if (Username.Length < MIN_USERNAME_LENGTH || Username.Length > MAX_USERNAME_LENGTH) { error = "Username length nust be no less than 6 symbols and no more than 20 symbols."; IsValidUsername = false; } else { IsValidUsername = true; } break; case "IP": regex = new Regex(regexIP); match = regex.Match(IP); if (string.IsNullOrWhiteSpace(IP)) { error = "IP is required"; IsValidIP = false; } else if (!match.Success) { error = "IP must be valid ip format. For example '192.168.1.0'"; IsValidIP = false; } else { IsValidIP = true; } break; case "Port": if (string.IsNullOrWhiteSpace(Port)) { error = "Port is required"; IsValidPort = false; } else if (!Port.All(char.IsDigit)) { error = "Port must be valid"; IsValidPort = false; } else { IsValidPort = true; } break; } if (Errors.ContainsKey(parameter)) { Errors[parameter] = error; } else if (error != null) { Errors.Add(parameter, error); } RaisePropertyChanged(nameof(Errors)); return(error); } }