using InSituLaboratory.IService; using Prism.Mvvm; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InSituLaboratory.Models { public class UserModel : BindableBase, INotifyDataErrorInfo { public UserModel() { } IUserService _userService; public UserModel(IUserService userService) { _userService = userService; } public int Index { get; set; } public int UserId { get; set; } private string _userIcon; public string UserIcon { get { return _userIcon; } set { SetProperty(ref _userIcon, value); } } private string _userName; public string UserName { get { return _userName; } set { _userName = value; _errors.Remove("UserName"); Task.Run(async () => { await Task.Delay(500);// 只是做为耗时操作的测试,实际开发中不需要这句 if (string.IsNullOrEmpty(value)) { _errors.Add("UserName", new List { "用户名不能为空" }); ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs("UserName")); } else if (_userService != null && _userService.CheckUserName(value)) { _errors.Add("UserName", new List { "用户名已被占用" }); ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs("UserName")); } }); } } public string RealName { get; set; } public int? Age { get; set; } private int? _gender; public int? Gender { get { return _gender; } set { SetProperty(ref _gender, value); } } /// /// 性别转化 1-男 0-女 /// private string? _gender1; public string? Gender1 { get { return _gender1; } set { SetProperty(ref _gender1, value); } } public string Address { get; set; } public string Password { get; set; } public string Email { get; set; } public string Phone { get; set; } private int _status; public int Status { get { return _status; } set { SetProperty(ref _status, value); } } public string? QQ { get; set; } public string? WeChat { get; set; } private bool _isSelected; public bool IsSelected { get { return _isSelected; } set { SetProperty(ref _isSelected, value); } } public List Roles { get; set; } Dictionary> _errors = new Dictionary>(); public bool HasErrors => _errors.Count > 0; public event EventHandler? ErrorsChanged; public IEnumerable GetErrors(string? propertyName) { if (_errors.ContainsKey(propertyName)) return _errors[propertyName]; return null; } } }