public TeleportCityViewModel(IDispatcherService dispatcherService, string functionTag, IDialogService dialogService, ScoreInfoService scoreInfoService, CityPositionService cityPositionService, TeleRecordService teleRecordService) : base(dispatcherService, functionTag) { _dialogService = dialogService; _scoreInfoService = scoreInfoService; _cityPositionService = cityPositionService; _teleRecordService = teleRecordService; DataGridItemChanged = new RelayCommand <DataGridItemChangedEventArgs>(OnDataGridItemChanged); RefreshList = new RelayCommand(PrivateRefreshList); RemoveItem = new RelayCommand(() => { if (_dialogService.ShowOKCancel("确定删除选中数据吗?")) { _ = _cityPositionService.RemoveAsync(SelectedItem); CityPositions.Remove(SelectedItem); } }, () => { return(SelectedItem != null); }); RemoveAll = new RelayCommand(() => { if (_dialogService.ShowOKCancel("确定删除所有数据吗?")) { _ = _cityPositionService.RemoveAllAsync(); CityPositions = null; } }, () => { return(CityPositions != null); }); AddData = new RelayCommand(() => { if (string.IsNullOrEmpty(TeleCmd)) { _dialogService.ShowInformation("传送命令不能为空"); return; } if (CityPositions.FirstOrDefault(p => p.TeleCmd == TeleCmd) != null) { _dialogService.ShowInformation("传送命令重复"); return; } var cityPosition = new CityPositionDto() { CityName = CityName, TeleCmd = TeleCmd, TeleNeedScore = TeleNeedScore, Pos = Pos }; _ = _cityPositionService.AddAsync(cityPosition); CityPositions.Add(cityPosition); }); AddAvailableVariables(); PrivateRefreshList(); }
private void OnDataGridItemChanged(DataGridItemChangedEventArgs eventArgs) { if (eventArgs.IsChanged == false) { return; } if (eventArgs.NewItem is CityPositionDto newItem && eventArgs.OldItem is CityPositionDto oldItem) { if (CityPositions.FirstOrDefault(p => p.TeleCmd == newItem.TeleCmd && object.Equals(p, newItem) == false) != null) { _dialogService.ShowInformation("传送命令重复"); newItem.TeleCmd = oldItem.TeleCmd;// 此时新值还未更新至ui } else { _ = _cityPositionService.UpdateAsync(newItem); } } }