using log4net; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using DM_Weight.Finger; using DM_Weight.Models; using DM_Weight.msg; using DM_Weight.Port; using DM_Weight.util; namespace DM_Weight.ViewModels { public class FingerprintDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime { private readonly ILog logger = LogManager.GetLogger(typeof(FingerprintDialogViewModel)); private FingerprintUtil _fingerprintUtil; EventAggregator _eventAggregator; public FingerprintDialogViewModel(FingerprintUtil fingerprintUtil, EventAggregator eventAggregator) { _fingerprintUtil = fingerprintUtil; _eventAggregator = eventAggregator; } public UserList UserList { get; set; } public Dictionary FingerIndexs { get { Dictionary l = new Dictionary(); l.Add("左小拇指", 0); l.Add("左无名指", 1); l.Add("左中指", 2); l.Add("左食指", 3); l.Add("左大拇指", 4); l.Add("右小拇指", 5); l.Add("右无名指", 6); l.Add("右中指", 7); l.Add("右食指", 8); l.Add("右大拇指", 9); return l; } } private int _fingerIndex = 0; public event Action RequestClose; public int FingerIndex { get => _fingerIndex; set => SetProperty(ref _fingerIndex, value); } public bool KeepAlive => false; private int _status = 0; public int Status { get => _status; set => SetProperty(ref _status, value); } public string Title => "录入指纹"; public DelegateCommand StartInsert { get => new DelegateCommand(() => { Status = 1; _fingerprintUtil.SaveUser(UserList); _fingerprintUtil.SaveFingerprint(UserList.Id, FingerIndex); RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); }, () => Status == 0).ObservesProperty(() => Status); } public DelegateCommand CancelCommand { get => new DelegateCommand(() => { // 关闭当前窗口 RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); } public bool CanCloseDialog() { return true; } public void OnDialogClosed() { _eventAggregator.GetEvent().Unsubscribe(RegEvent1); } public void OnDialogOpened(IDialogParameters parameters) { UserList = parameters.GetValue("User"); _eventAggregator.GetEvent().Subscribe(RegEvent1); } void RegEvent1(FingerprintMsg msg) { logger.Info(msg.ToString()); ; if (Status == 1) { if (msg.Message.Equals("INS_FINGER")) { if (msg.Result) { Status = 0; // 关闭当前窗口 RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); } } } } } }